c# 在捷克语中对数组进行排序
c# Sorting array in Czech
我在对包含捷克名字的数组进行排序时遇到问题。
我有这样的数组:
var myList = new[]
{
"Čas revize", "Datum kalibrace", "Chybové kódy"
};
并尝试这样排序:
CultureInfo culture = new CultureInfo("cs-CZ");
var result = myList.OrderBy(x => x, StringComparer.Create(culture, true));
所以我希望数据排序如下:
"Čas revize", "Chybové kódy", "Datum kalibrace"
但它以不同的顺序结束:
"Čas revize", "Datum kalibrace", "Chybové kódy"
有趣的问题。如果您阅读 documentation
In Czech - Czech Republic culture, "ch" is a single character that is greater than "d". However, in English - United States culture, "ch" consists of two characters, and "c" is less than "d".
捷克字母是有序的
A Á B C Ç D Ď E É Ě F G H Ch I Í J K L M N Ç O Ó P Q R Ø S Š T Ť U Ú Ů V W X Y Ý Z Ž
所以你的数组顺序是正确的。
我刚刚测试了这个:
List<string> myList = new List<string> { "Čas revize", "Datum kalibrace", "Chybové kódy", "óóó", "ČČČ", "aaa", "ééé", "èèè", "êêê", "fff", "Code" };
CultureInfo culture = new CultureInfo ("cs-CZ");
List<string> result = myList.OrderBy (x => x, StringComparer.Create (culture, true)).ToList ();
得到结果:
aaa Code 'Čas revize' ČČČ 'Datum kalibrace' ééé èèè êêê fff Chybové kódy óóó
然后我测试了这个:
List<string> myList = new List<string> { "Čas revize", "Datum kalibrace", "Chybové kódy", "óóó", "ČČČ", "aaa", "ééé", "èèè", "êêê", "fff", "Code" };
List<string> result = myList.OrderBy (j => j).ToList ();
得到这个结果:
aaa 'Čas revize' ČČČ 'Chybové kódy' Code 'Datum kalibrace' ééé èèè êêê fff óóó
这是因为在捷克语中 'Ch' 在字母表中位于 'H' 之后和 'I' 之前。但是如果没有 CultureInfo,它似乎可以正确处理它,而不管特殊字符。
我在对包含捷克名字的数组进行排序时遇到问题。 我有这样的数组:
var myList = new[]
{
"Čas revize", "Datum kalibrace", "Chybové kódy"
};
并尝试这样排序:
CultureInfo culture = new CultureInfo("cs-CZ");
var result = myList.OrderBy(x => x, StringComparer.Create(culture, true));
所以我希望数据排序如下:
"Čas revize", "Chybové kódy", "Datum kalibrace"
但它以不同的顺序结束:
"Čas revize", "Datum kalibrace", "Chybové kódy"
有趣的问题。如果您阅读 documentation
In Czech - Czech Republic culture, "ch" is a single character that is greater than "d". However, in English - United States culture, "ch" consists of two characters, and "c" is less than "d".
捷克字母是有序的
A Á B C Ç D Ď E É Ě F G H Ch I Í J K L M N Ç O Ó P Q R Ø S Š T Ť U Ú Ů V W X Y Ý Z Ž
所以你的数组顺序是正确的。
我刚刚测试了这个:
List<string> myList = new List<string> { "Čas revize", "Datum kalibrace", "Chybové kódy", "óóó", "ČČČ", "aaa", "ééé", "èèè", "êêê", "fff", "Code" };
CultureInfo culture = new CultureInfo ("cs-CZ");
List<string> result = myList.OrderBy (x => x, StringComparer.Create (culture, true)).ToList ();
得到结果:
aaa Code 'Čas revize' ČČČ 'Datum kalibrace' ééé èèè êêê fff Chybové kódy óóó
然后我测试了这个:
List<string> myList = new List<string> { "Čas revize", "Datum kalibrace", "Chybové kódy", "óóó", "ČČČ", "aaa", "ééé", "èèè", "êêê", "fff", "Code" };
List<string> result = myList.OrderBy (j => j).ToList ();
得到这个结果:
aaa 'Čas revize' ČČČ 'Chybové kódy' Code 'Datum kalibrace' ééé èèè êêê fff óóó
这是因为在捷克语中 'Ch' 在字母表中位于 'H' 之后和 'I' 之前。但是如果没有 CultureInfo,它似乎可以正确处理它,而不管特殊字符。