jms*_*ter 14 .net c# string compare
根据当前的文化,我总是假设.Net按字典顺序比较字符串.但是当其中一个字符串以' - '结尾时,有一些奇怪的事情:
"+".CompareTo("-")
Returns: 1
"+1".CompareTo("-1")
Returns: -1
Run Code Online (Sandbox Code Playgroud)
我得到了我尝试的所有文化,包括不变的文化.任何人都可以解释发生了什么,我怎样才能获得当前语言环境的一致字符排序?
Ant*_*lev 10
尝试将此更改为
string.Compare("+", "-", StringComparison.Ordinal); // == -2
string.Compare("+1", "-1", StringComparison.Ordinal); // == -2
Run Code Online (Sandbox Code Playgroud)
对于任何特定的语言环境,不一定有一致的逐字符排序.
从MSDN文档:
例如,文化可以指定某些字符组合被视为单个字符,或者以特定方式比较大写和小写字符,或者字符的排序顺序取决于其前面或后面的字符.
确保一致的逐字符排序的唯一方法是使用序数比较,如Anton的答案所示.