我试图对包含 - 和/的字符串进行排序。但我无法理解输出
Console.WriteLine(@"a-b".CompareTo(@"a/b"));
Console.WriteLine(@"-b".CompareTo(@"/b"));
Console.WriteLine(@"a-".CompareTo(@"a/"));
Console.WriteLine(@"-".CompareTo(@"/"));
Console.WriteLine(@"-/".CompareTo(@"/-"));
Console.WriteLine(@"--".CompareTo(@"//"));
输出
1
1
-1
-1
1
-1
虽然我希望所有输出都是1.我误解了这里的情况吗?感谢
答案 0 :(得分:2)
来自MSDN:
字符集包括可忽略的字符。
CompareTo(String)
方法在执行时不考虑这些字符 文化敏感的比较。例如,如果以下代码是 在.NET Framework 4或更高版本上运行,比较" animal"同 " ani-mal" (使用软连字符或U + 00AD)表示两者 字符串等效。
这意味着如果您以文化敏感的方式进行比较,则忽略-
。
这将给出您的预期结果(全部为负数):
Console.WriteLine(String.CompareOrdinal(@"a-b", @"a/b"));
Console.WriteLine(String.CompareOrdinal(@"-b",@"/b"));
Console.WriteLine(String.CompareOrdinal(@"a-",@"a/"));
Console.WriteLine(String.CompareOrdinal(@"-",@"/"));
Console.WriteLine(String.CompareOrdinal(@"-/",@"/-"));
Console.WriteLine(String.CompareOrdinal(@"--",@"//"));