Character after hyphen affects string.compare

核能气质少年 提交于 2019-12-10 14:58:35

问题


I would expect "2-" and "22" to always compare the same way, but changing the 3rd character changes the sort order.

string.Compare("2-1","22-", StringComparison.CurrentCulture) //-1
string.Compare("2-2","22-", StringComparison.CurrentCulture) //1

What on earth is happening here?

Our culture is en-US by the way.


回答1:


As per the 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 of StringComparison.Ordinal or OrdinalIgnoreCase for the comparisonType parameter.

In your case, the hyphen is an ignorable character. In this case it means that the middle hyphen isn't taken into account. That means it actually compares 21 and 22 to 22-, which will evaluate to -1 and 1 respectively.



来源:https://stackoverflow.com/questions/44675770/character-after-hyphen-affects-string-compare

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!