[英]C# Sorting string list with underscore and hyphen
我有一個List<string>
,其值為SK-Disbur
和SK_Recon
。 當我對列表進行排序時,output 應該是什么?
我正進入(狀態:
SK_偵察
SK-Disbur
我期待在 Recon 之前使用 Disbur,因為連字符出現在下划線之前。
這是我的代碼:
List<string> list=new List<string>();
list.Add("SK-Disbur");
list.Add("SK_Recon");
list.Sort();
for(int i=0;i <list.Count;i ++)
{
Console.WriteLine(list[i]);
}
默認情況下 list.Sort() 使用當前區域性的排序規則。 這意味着每個字符都使用語言排序(字母順序)進行排序。 您應該使用序數排序,以便按每個字符的二進制值排序。 試試: list.Sort(StringComparer.Ordinal);
.NET 不使用 ASCII,它使用 Unicode UTF-16。 當您執行字符串排序時,默認情況下 .NET 使用當前區域性的排序規則。 在這種情況下,這些規則表明“_”在“-”之前。 您可以使用“序數”字符串比較器獲得您期望的結果:
List<string> list = new List<string>()
{
"SK-Disbur",
"SK_Recon",
"SK1",
"SK2"
};
list.Sort(StringComparer.Ordinal);
for (int i = 0; i < list.Count; i++)
{
Console.WriteLine(list[i]);
}
你會得到這個結果
SK-Disbur
SK1
SK2
SK_Recon
但是如果你使用 list.Sort() (默認情況下)結果會很不一樣
SK_Recon
SK-Disbur
SK1
SK2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.