Asp.Net / C#何时Å等于A? (É等于E)

时间:2009-09-15 14:23:58

标签: c# culture diacritics

我在alfabet中寻呼国家,因此国家开始使用A-D,E-H等。 但是我也希望列出åbrohw在a,和thepollewop在e。 我尝试使用stringcompare选项提供string.starts,但它不起作用......

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

米歇尔

4 个答案:

答案 0 :(得分:6)

有关创建没有变音符号的版本的解决方案,请参阅How do I remove diacritics (accents) from a string in .NET?,您可以将其用于比较(同时仍然显示带有变音符号的版本)。

答案 1 :(得分: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

答案 2 :(得分:1)

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

A: (firstLetter <= A)
B: (firstLetter > A) AND (firstLetter <= B)
...

答案 3 :(得分:1)

您必须提供特定的文化来进行排序或为此编写自己的比较器。瑞典语的最终排序顺序是å,ä,ö。

很可能你想用变音符号来分解字母并将它们排序,好像它们没有变音符号一样。