为什么大写字母大于.Net中的小写字母?

sma*_*eos 9 c# java compare

在Java中:

"A".compareTo("a"); return -32 //"A" is less than "a".
Run Code Online (Sandbox Code Playgroud)

在.Net中,使用String.CompareTo:

"A".CompareTo("a"); return 1 //"A" is greater than "a".
Run Code Online (Sandbox Code Playgroud)

在.Net中,使用Char.CompareTo:

'A'.CompareTo('a'); return -32 //"A" is less than "a".
Run Code Online (Sandbox Code Playgroud)

我知道Java使用它在unicode表中的位置比较字符串字符,但.Net不是.如何确定哪个大写字母大于.Net中的小写字母?

String.CompareTo方法(String)

fge*_*fge 3

我能找到的医生说:

\n\n
\n

此方法使用当前区域性执行单词(区分大小写和区域性)比较。

\n
\n\n

因此,它与Java 的.compareTo()不太一样,Java 默认情况下使用 Unicode 代码点进行字典比较,正如您所说。

\n\n

因此,在 .NET 中,这取决于您当前的“文化”(我猜 Java 会称之为“语言环境”)。

\n\n

看来如果你想在.NET中进行字符串比较“\xc3\xa0 la Java”,你必须改用String.CompareOrdinal()

\n\n

相反,如果您想在 Java 中进行与语言环境相关的字符串比较,则需要使用Collator.

\n\n

最后, MSDN 上的另一个链接显示了文化对比较甚至字符串相等的影响。

\n