我有一个使用 string.compare(string,string) 对某些值进行排序的应用程序。我不明白的是为什么“1022”比较小于“10-23”,而“10-23”比较小于“1024”。
是否有特定于“-”值的东西导致了这个结果? string.compare 的重载对于相同类型的数据(带破折号的数字)的不同区域性设置会给出相同的结果吗?
从文档字符串.比较(字符串,字符串) http://msdn.microsoft.com/en-us/library/84787k22.aspx:
使用单词排序规则进行比较。
and further http://msdn.microsoft.com/en-us/library/system.globalization.compareoptions.aspx:
.NET Framework 使用三种不同的排序方式:单词排序、字符串排序和序数排序。词排序对字符串执行区域性敏感的比较。某些非字母数字字符可能分配有特殊的权重。例如,连字符(“-”)可能分配有非常小的权重,以便“coop”和“co-op”在排序列表中彼此相邻出现。字符串排序与单词排序类似,只是没有特殊情况。因此,所有非字母数字符号都位于所有字母数字字符之前。序数排序根据字符串每个元素的 Unicode 值来比较字符串。
迈克尔·卡普兰 (Michael Kaplan) 提供的更多详细信息如下:.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)