我希望“2-”和“22”总是以相同的方式进行比较,但更改第 3 个字符会更改排序顺序。
string.Compare("2-1","22-", StringComparison.CurrentCulture) //-1
string.Compare("2-2","22-", StringComparison.CurrentCulture) //1
这里到底发生了什么?
顺便说一下,我们的文化是 en-US。
最佳答案
根据 documentation :
Character sets include ignorable characters. The
Compare(String, String, StringComparison)
method does not consider such characters when it performs a culture-sensitive comparison. To recognize ignorable characters in your comparison, supply a value ofStringComparison.Ordinal
orOrdinalIgnoreCase
for thecomparisonType
parameter.
在您的例子中,连字符是一个可忽略的字符。在这种情况下,这意味着不考虑中间的连字符。这意味着它实际上将 21
和 22
与 22-
进行比较,后者将评估为 -1
和 1
分别。
关于c# - 连字符后的字符影响 string.compare,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44675770/