gpt4 book ai didi

c# - String.CompareTo 与大小写

转载 作者:太空狗 更新时间:2023-10-29 17:53:12 25 4
gpt4 key购买 nike

示例代码说明:

    int res1 = "a".CompareTo("A");  // res1 = -1
int res2 = "ab".CompareTo("A"); // res2 = 1

我在结尾处看到 res1 = -1res2 = 1,这有点出乎意料。我认为 res1 会返回 1,因为在 ASCII 图表上,“A”(0x41) 在“a”(0x61) 之前。

此外,对于 res2,字符串的长度似乎有所不同,这似乎很奇怪。即,如果“a”出现在“A”之前(如 res1 = -1 所示),那么我会认为“a”withAnythingAfterIt 也会出现在“A”withAnythingAfterIt 之前。

有人能解释一下吗?谢谢。

最佳答案

这是预期的行为。 String.CompareTo(string) 使用其排序顺序进行文化敏感比较。事实上,它调用 CultureInfo 来完成我们在源代码中看到的工作:

public int CompareTo(String strB) {
if (strB==null) {
return 1;
}

return CultureInfo.CurrentCulture.CompareInfo.Compare(this, strB, 0);
}

您当前的文化在排序顺序中将“A”放在“a”之后,因为它会是平局,但不是在“ab”之后,因为在大多数排序中“ab”显然在“a”或“A”之后我知道的命令。这只是打破平局机制的作用:当排序顺序相同时,使用序数值!

关于c# - String.CompareTo 与大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49663488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com