本文提供了此 API 参考文档的补充说明。
用于比较和排序数据的约定因区域性而异。 例如,排序顺序可能基于拼音或字符的可视表示形式。 在东亚语言中,按文字的笔画和部首对字符进行排序。 排序还取决于语言和文化所使用的字母表顺序。 例如,丹麦语有一个“Æ”字符,它在字母表中排在“Z”之后。 此外,比较可以区分大小写或不区分大小写,并且大小写规则也可能因区域性而异。 CompareInfo 类负责维护此区分区域性的字符串比较数据并执行区分区域性的字符串运算。
通常,不必直接实例化对象,因为所有非序号字符串比较作(包括对方法的CompareInfo调用)都隐式使用一个String.Compare对象。 但是,如果确实要检索对象 CompareInfo ,可以通过以下方式之一执行此作:
通过检索某个特定文化的 CultureInfo.CompareInfo 属性值。
通过使用区域性名称调用静态 GetCompareInfo 方法。 这允许对 CompareInfo 对象进行后期绑定访问。
忽略的搜索值
字符集包括可忽略字符,这些字符是执行语言或区域性敏感比较时不考虑的字符。 当比较方法(如 IndexOf 和 LastIndexOf)执行区分区域性的比较时,它们不会考虑此类字符。 可忽略的字符包括:
String.Empty。 文化敏感比较方法将始终在被搜索字符串的开头(索引零)找到空字符串。
字符或由多个字符和运算中未考虑的码位(因为比较选项)构成的字符串,具体而言,CompareOptions.IgnoreNonSpace 和 CompareOptions.IgnoreSymbols 选项生成忽略符号和非间距组合字符的搜索。
具有没有语言意义的代码点的字符串。 例如,始终在区分区域性的字符串比较中忽略软连字符 (U+00AD)。
安全注意事项
如果安全决策取决于字符串比较或大小写更改,则您应使用 InvariantCulture 属性来确保行为一致,无论操作系统的区域性设置如何。
注释
如果可能,应使用具有类型 CompareOptions 参数的字符串比较方法来指定预期的比较类型。 作为一般规则,对于在用户界面中显示的字符串比较,请使用语言选项(使用当前文化)并指定 Ordinal 或 OrdinalIgnoreCase 用于安全比较。