String.Compare()与匈牙利CultureInfo工作不正确的特定字符串

Iva*_*van 7 c#

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"它打印"等于")这似乎是特定符号的问题.

Jep*_*sen 5

你会期待什么?在匈牙利语中,“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”永远不会出现在“自然”匈牙利语中。