2016-03-17 72 views
-3

我必須對字符串數組進行排序。我該怎麼做,如果:如何在C中對字符串進行排序#

  1. 它們必須按字符串長度的順序放置。
  2. 如果長度相等,則必須按字母順序排列。

有什麼簡單的辦法嗎?

+1

什麼樣的代碼你有這麼遠嗎? – Amy

+3

那麼你可以調用'Array.Sort'並傳遞一個'IComparer '或一個'Comparison '......或者你可以使用LINQ ......你有沒有嘗試過任何東西?發生了什麼? –

+0

看看這個http://www.dotnetperls.com/sort – user990423

回答

1

下面是在C#中的傳統方式...

static void Main(string[] args) 
{ 
    List<string> list = new List<string>(); 
    list.Add("1991728819928891"); 
    list.Add("0991728819928891"); 
    list.Add("3991728819928891"); 
    list.Add("2991728819928891"); 
    list.Add("Hello"); 
    list.Add("World"); 
    list.Add("StackOverflow"); 
    list.Sort(
     delegate (string a, string b) { 
      int result = a.Length.CompareTo(b.Length); 
      if (result == 0) 
       result = a.CompareTo(b); 
      return result; 
     } 
    ); 

    Console.WriteLine(string.Join("\n", list.ToArray())); 
} 

樣本輸出:

Hello 
World 
StackOverflow 
0991728819928891 
1991728819928891 
2991728819928891 
3991728819928891 
1

您可以通過以下方式與LINQ做到這一點:

string[] arr = new[] { "aa", "b", "a" , "c", "ac" }; 
var res = arr.OrderBy(x => x.Length).ThenBy(x => x).ToArray(); 

另一種方法是使用Array.Sort定製IComparer實現。

相關問題