2011-04-04 54 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碼值的數組排序,所以你會得到平假名,片假名,然後漢字。