7

带有匈牙利 CultureInfo 的 String.Compare() 对特定字符串不正确:

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

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

4

1 回答 1

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));

在匈牙利语中,除了外来词和一些名字外,他们没有字母“y”。但是当您说 时"nY",这不可能是“ny”字母。所以也许 .NET 将其视为两个字母。

有人懂匈牙利语吗?听听他们的意见可能会很有趣。但我很确定字符串“nY”永远不会出现在“自然”匈牙利语中。

于 2012-07-11T09:17:29.350 回答