4

我在 alfabet 中寻呼国家,所以国家以 AD、EH 等开头。但我也想在 a 上列出 åbrohw,在 e 上列出 ëpollewop。我试过 string.startswith 提供一个 stringcompare 选项,但它不起作用......

我在 sv-SE 文化代码下运行,如果这很重要的话......

米歇尔

4

4 回答 4

6

请参阅如何从 .NET 中的字符串中删除变音符号(重音符号)?用于创建不带变音符号的版本的解决方案,您可以将其用于比较(同时仍显示带有变音符号的版本)。

于 2009-09-15T14:30:41.140 回答
4

哦,是的,文化很重要。如果您运行以下命令:

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
于 2009-09-15T14:31:53.303 回答
1

尝试使用范围选择而不是精确匹配。

A: (firstLetter <= A)
B: (firstLetter > A) AND (firstLetter <= B)
...
于 2009-09-15T14:27:43.110 回答
1

您必须为排序提供特定的文化或为此编写自己的比较器。瑞典语的默认排序顺序将 å、ä、ö 放在最后。

您很可能希望分解带有变音符号的字母并对它们进行排序,就好像它们没有变音符号一样。

于 2009-09-15T14:29:15.837 回答