String.Compare()与匈牙利CultureInfo工作不正确的特定字符串:
if (0 == String.Compare(@"ny", @"nY", true, new CultureInfo("hu-HU")))
Console.WriteLine("Equal");
else
Console.WriteLine("Not equal");
Run Code Online (Sandbox Code Playgroud)
当然我想要得到"平等"答案,但事实并非如此.如果我更改字符串它正常工作(例如"abc"和"ABC"它打印"等于")这似乎是特定符号的问题.
你会期待什么?在匈牙利语中,“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));
Run Code Online (Sandbox Code Playgroud)
在匈牙利语中,除了外来词和一些名字外,他们没有字母“y”。但是当您说 时"nY",这不可能是“ny”字母。所以也许 .NET 把它当作两个字母。
有人懂匈牙利语吗?听听他们的意见会很有趣。但我很确定字符串“nY”永远不会出现在“自然”匈牙利语中。