如果要创建旨在根据文化背景向用户显示结果的应用程序,则文化敏感的字符串操作是有利的。 默认情况下,文化敏感性方法会从当前线程的 CurrentCulture 属性中获取所要使用的文化设置。
有时候,并不需要执行区分区域性的字符串操作。 当结果不应依赖于区域性时,使用区分区域性的操作可能会导致应用程序代码在遇到自定义事例映射和排序规则的区域性时失败。 相关示例,请参阅使用字符串的最佳做法中的使用当前区域性的字符串比较部分。
字符串操作是否应该区分区域性取决于应用程序使用结果的方式。 向用户显示结果的字符串操作通常应考虑文化差异。 例如,如果应用程序在列表框中显示本地化字符串的排序列表,则应用程序应执行区分区域性的排序。
在内部使用的字符串操作结果通常不受文化影响。 通常,如果应用程序使用未向用户显示的文件名、持久性格式或符号信息,则字符串作的结果不应因区域性而异。 例如,如果应用程序比较字符串以确定它是已识别的 XML 标记,则比较不应具有文化敏感性。 此外,如果安全决策基于字符串比较或大小写更改操作的结果,则操作应该不区分区域性,以确保结果不受 CurrentCulture 值的影响。
大多数默认情况下执行区分区域性的字符串操作的 .NET 方法还提供可保证获得不区分区域性结果的重载。 使用 CultureInfo 参数的重载允许消除大小写映射和排序规则中的区域性差异。 对于不区分区域性的字符串操作,将区域性指定为 CultureInfo.InvariantCulture。
本部分内容
本节中的文章说明如何使用默认区分区域性的 .NET 方法执行不区分区域性的字符串操作。
进行不考虑文化差异的字符串比较
介绍如何使用 String.Compare 和 String.CompareTo 方法执行不区分区域性的字符串比较。
执行不区分区域性的大小写更改
介绍了如何使用 String.ToUpper、String.ToLower、Char.ToUpper 和 Char.ToLower 方法执行非区域性敏感型大小写更改。
在集合中执行不区分文化的字符串操作
介绍了如何使用 CaseInsensitiveComparer、CaseInsensitiveHashCodeProvider 类、SortedList、ArrayList.Sort 和 CollectionsUtil.CreateCaseInsensitiveHashtable 在集合中执行非区域性敏感型操作。
在数组中执行不区分文化的字符串操作
介绍了如何使用 Array.Sort 和 Array.BinarySearch 方法在数组中执行非区域性敏感型操作。