【问题标题】:C# - string.Compare with char '-' has a weird behavior [duplicate]C# - string.Compare with char '-' 有一个奇怪的行为[重复]
【发布时间】:2020-08-26 22:56:27
【问题描述】:
int i;
i = String.Compare("A-", "A0"); // i = -1 -> OK
i = String.Compare("A-A", "A0A"); // i = 1 -> WHY ? 

我不明白为什么将相同的字母“A”附加到两个文本会更改返回的值?

我知道 String.CompareOrdinal 在这两种情况下都会返回正确的负值。我想知道为什么 String.Compare 没有。

【问题讨论】:

标签: c#


【解决方案1】:

简单地说,连字符被忽略了。以下将产生相同的结果

var ads = new[] {"A", "A0", "AA", "A0A"};
Console.WriteLine(string.Join(",",ads.OrderBy(x => x)));

String.Compare Method

来电者须知

字符集包括可忽略的字符。这 Compare(String, String) 方法不考虑此类字符时 它执行文化敏感的比较。例如,如果 以下代码在 .NET Framework 4 或更高版本上运行,a “动物”与“动物”的文化敏感比较(使用软 hyphen, or U+00AD) 表示两个字符串等价

更多

要在字符串比较中识别可忽略的字符,请调用 Compare(String, String, StringComparison) 方法并提供一个值 compareType 参数的 Ordinal 或 OrdinalIgnoreCase。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-12-13
    相关资源
    最近更新 更多