执行不区分区域性的字符串操作

如果要创建旨在按区域性向用户显示结果的应用程序,则区分区域性的字符串操作无疑是一个有利条件。 默认情况下,区分区域性的方法从当前线程的 CurrentCulture 属性中获得要使用的区域性。

有时候,并不需要执行区分区域性的字符串操作。 当结果不应依赖于区域性时,使用区分区域性的操作可能会导致应用程序代码在遇到自定义事例映射和排序规则的区域性时失败。 相关示例,请参阅使用字符串的最佳做法中的使用当前区域性的字符串比较部分。

字符串操作是否应该区分区域性取决于应用程序使用结果的方式。 向用户显示结果的字符串操作通常应是区分区域性的。 例如,如果应用程序在列表框中显示本地化字符串的排序列表,则应用程序应执行区分区域性的排序操作。

内部使用的字符串操作的结果通常应该是不区分区域性的。 一般而言,如果应用程序使用的是不向用户显示的文件名、持久性格式或符号信息,则字符串操作的结果不应因区域性而异。 例如,如果应用程序比较字符串以确定它是否是可识别的 XML 标记,则这种比较不应是区分区域性的。 此外,如果安全决策基于字符串比较或大小写更改操作的结果,则操作应该不区分区域性,以确保结果不受 CurrentCulture 值的影响。

大多数默认情况下执行区分区域性的字符串操作的 .NET 方法还提供可保证获得不区分区域性结果的重载。 使用 CultureInfo 参数的重载允许消除大小写映射和排序规则中的区域性差异。 对于不区分区域性的字符串操作,将区域性指定为 CultureInfo.InvariantCulture

本节内容

本节中的文章说明如何使用默认区分区域性的 .NET 方法执行不区分区域性的字符串操作。

执行不区分区域性的字符串比较
介绍了如何使用 String.CompareString.CompareTo 方法执行非区域性敏感型字符串比较。

执行不区分区域性的大小写更改
介绍了如何使用 String.ToUpperString.ToLowerChar.ToUpperChar.ToLower 方法执行非区域性敏感型大小写更改。

在集合中执行不区分区域性的字符串操作
介绍了如何使用 CaseInsensitiveComparerCaseInsensitiveHashCodeProvider 类、SortedListArrayList.SortCollectionsUtil.CreateCaseInsensitiveHashtable 在集合中执行非区域性敏感型操作。

在数组中执行不区分区域性的字符串操作
介绍了如何使用 Array.SortArray.BinarySearch 方法在数组中执行非区域性敏感型操作。

另请参阅