为什么IndexOf不能在匈牙利文化中找到与Y结合的角色N?

Dar*_*ark 19 c# indexof

IndexOf调用字符串的函数返回-1,但肯定有匹配.

string sUpperName = "PROGRAMOZÁSI NYELVEK II. ADA EA+GY. (BSC 08 A)";
string sUpperSearchValue = "N";

sUpperName.IndexOf(sUpperSearchValue); // Returns -1

sUpperSearchValue = "NY";
sUpperName.IndexOf(sUpperSearchValue); // Returns 13

sUpperName[13]; // 78 'N'
sUpperSearchValue[0]; // 78 'N'
sUpperName[13] == sUpperSearchValue[0]; // true
Run Code Online (Sandbox Code Playgroud)

你有什么想法,为什么它发现"NY"但不是"N"它自己?如果我在字符串中搜索其他所有字母,它就能找到它,但不能找到它"N".小写也会出现同样的问题.

如果我也" N"没有输入任何匹配," NY"就可以了.

在控制台中的图片 这里

Gáb*_*kos 20

在匈牙利.NET文化中,字母组合"ny"代表一个单独的字母,所以那里没有"N",在你的例子中只有"NY".

  • @GrantWinney是的,这些是不同的字母,两者都可用.虽然在这种情况下它的启发式是正确的,但这个字母组合是ny(在"nyelvek"中),而不是两个字母. (5认同)
  • 把我的文化改成"胡胡"确实让我重现了这个问题; 以前工作的代码现在为`N`返回`-1`.将"N"与"Y"分开也适用于匈牙利语; 这是否意味着`N`和`Y`永远不能放在一起而不分别指'Ny`而不是'N`和`Y`? (4认同)