String.Compare()与匈牙利CultureInfo工作不正确的特定字符串:
if (0 == String.Compare(@"ny", @"nY", true, new CultureInfo("hu-HU")))
Console.WriteLine("Equal");
else
Console.WriteLine("Not equal");
当然我想得到“平等”的答案,但事实并非如此。 如果我更改字符串它正常工作(例如“abc”和“ABC”它打印“等于”) 这似乎是特定符号的问题。
答案 0 :(得分:4)
你会期待什么?在匈牙利语中,“ny”被认为是一个字母。它可以写成“ny”,“Ny”或“NY”。但从来没有“nY”。这按预期工作:
var hu = new CultureInfo("hu-HU");
Console.WriteLine(String.Compare("Ny", "NY", true, hu));
Console.WriteLine(String.Compare("ny", "NY", true, hu));
Console.WriteLine(String.Compare("ny", "Ny", true, hu));
在匈牙利语中,除了外来词和一些名字外,他们没有字母“y”。但是当你说"nY"
时,这不可能是“ny”字母。因此,.NET可能会将其视为两个字母。
有没有人知道匈牙利语?听到他们的意见可能很有意思。但我很确定字符串“nY”永远不会出现在“自然”匈牙利语中。