我在 alfabet 中寻呼国家,所以国家以 AD、EH 等开头。但我也想在 a 上列出 åbrohw,在 e 上列出 ëpollewop。我试过 string.startswith 提供一个 stringcompare 选项,但它不起作用......
我在 sv-SE 文化代码下运行,如果这很重要的话......
米歇尔
我在 alfabet 中寻呼国家,所以国家以 AD、EH 等开头。但我也想在 a 上列出 åbrohw,在 e 上列出 ëpollewop。我试过 string.startswith 提供一个 stringcompare 选项,但它不起作用......
我在 sv-SE 文化代码下运行,如果这很重要的话......
米歇尔
请参阅如何从 .NET 中的字符串中删除变音符号(重音符号)?用于创建不带变音符号的版本的解决方案,您可以将其用于比较(同时仍显示带有变音符号的版本)。
哦,是的,文化很重要。如果您运行以下命令:
List<string> letters = new List<string>() { "Å", "B", "A" };
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sv-SE");
letters.Sort();
Console.WriteLine("sv-SE:")
letters.ForEach(s => Console.WriteLine(s));
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-GB");
letters.Sort();
Console.WriteLine("en-GB:")
letters.ForEach(s => Console.WriteLine(s));
...你得到以下输出:
sv-SE:
A
B
Å
en-GB:
A
Å
B
尝试使用范围选择而不是精确匹配。
A: (firstLetter <= A)
B: (firstLetter > A) AND (firstLetter <= B)
...
您必须为排序提供特定的文化或为此编写自己的比较器。瑞典语的默认排序顺序将 å、ä、ö 放在最后。
您很可能希望分解带有变音符号的字母并对它们进行排序,就好像它们没有变音符号一样。