2011-04-04 53 views
2

我需要排序包含日文字母的List<string>。我怎么能在C#中做到这一点?本地化排序清单

+0

我不能保证这一点,但我认为如果你用'Compare'对它进行分类,给定正确的CultureInfo它应该开箱即用... – Crisfole 2011-04-04 22:20:59

回答

4

有一个过载List<T>.Sort(IComparer<T> comparer)。您可以将文化特定比较器传递给排序方法。下面的代码比较了使用日本的文化设置:

myList.Sort(StringComparer.Create(new CultureInfo("ja-JP"), true)); 

在这种情况下,我通过true作为参数,以指示比较必须是不区分大小写。该StringComparer有几个静态的属性和方法来创建一个合适的比较器:

StringComparer.CurrentCulture; 
StringComparer.CurrentCultureIgnoreCase; 
StringComparer.Create(CultureInfo culture, bool ignoreCase); 
etc. 

你可以找到更多信息on this msdn page

+0

日语没有大小写,但有三种不同的单词排序惯例。一种是基于发音,一种基于一首诗,一首是基于部首(构成角色的部分)。这就是我逐出的地方。 – 2011-04-05 00:04:19

+0

我打算分类假名列表{Hiragana}所以它会更简单 – 2011-04-05 04:13:31

+0

我发现,当使用SortedList我可以做到这一点easly – 2011-04-05 12:06:16

1

我用:

Array.Sort(myArray, StringComparer.Ordinal); 

它将由ASCII码值的数组排序,所以你会得到平假名,片假名,然后汉字。