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

时间:2012-07-11 08:31:36

标签: c#

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

if (0 == String.Compare(@"ny", @"nY", true, new CultureInfo("hu-HU")))
  Console.WriteLine("Equal");
else
  Console.WriteLine("Not equal");

当然我想得到“平等”的答案,但事实并非如此。 如果我更改字符串它正常工作(例如“abc”和“ABC”它打印“等于”) 这似乎是特定符号的问题。

1 个答案:

答案 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”永远不会出现在“自然”匈牙利语中。