如何按字母排序字符串数组?

问题描述:

我有很多字符串的数组。我怎样才能按字母排序字符串?如何按字母排序字符串数组?

听起来像你只是想使用Array.Sort方法。

Array.Sort(myArray) 

有许多重载,其中一些采取定制comparers(类或委托),但默认的应该做的按字母顺序排序(升序)你似乎想。

+1

+1仅提及其默认行为。它不会按字母顺序排序,您需要欺骗它或实施自己的排序。 – 2010-06-30 11:32:37

+1

或只是.Sort(),如果他们在列表中 – simendsjo 2010-06-30 11:32:48

+1

+1对于更复杂的排序,我会看一看IComparable接口或Linq的Sort表达式 – armannvg 2010-06-30 12:45:41

class Program 

    { 
     static void Main() 
     { 
      string[] a = new string[] 
      { 
       "Egyptian", 
       "Indian", 
       "American", 
       "Chinese", 
       "Filipino", 
      }; 
      Array.Sort(a); 
      foreach (string s in a) 
      { 
       Console.WriteLine(s); 
      } 
     } 
    } 

Array.Sort还提供了一个Predicate-Overload。你可以指定你的分拣行为有:

Array.Sort(myArray, (p, q) => p[0].CompareTo(q[0])); 

您还可以使用LINQ排序的数组:

string[] myArray = ...; 
string[] sorted = myArray.OrderBy(o => o).ToArray(); 

LINQ也empoweres你整理一个二维数组:

string[,] myArray = ...; 
string[,] sorted = myArray.OrderBy(o => o[ROWINDEX]).ThenBy(t => t[ROWINDEX]).ToArray(); 

LINQ的默认排序行为也是按字母顺序排列的。您可以通过使用OrderByDescending()/ ThenByDescending()来取消。