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