【问题标题】:how to sort a string array by alphabet?如何按字母对字符串数组进行排序?
【发布时间】:2011-03-10 02:12:00
【问题描述】:

我有一个包含许多字符串的数组。如何按字母对字符串进行排序?

【问题讨论】:

    标签: c# sorting arrays


    【解决方案1】:

    听起来您只想使用Array.Sort 方法。

    Array.Sort(myArray)
    

    有许多重载,其中一些采用自定义比较器(类或委托),但默认的应该按照您的意愿按字母顺序(升序)排序。

    【讨论】:

    • +1 仅提及其默认行为。它不会按字母顺序反向排序,您需要欺骗它或实现自己的排序。
    • 如果它们在列表中,则只需 .Sort()
    • +1 很好的答案,对于更复杂的排序,我会看看 IComparable 接口或 Linq 的排序表达式
    【解决方案2】:

    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 还使您能够对二维数组进行排序:

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

    LINQ 的默认排序行为也是按字母顺序排列的。您可以改用 OrderByDescending() / ThenByDescending() 来扭转这种情况。

    【讨论】:

      【解决方案3】:
      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);
              }
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-16
        • 2013-07-19
        • 2013-09-04
        • 1970-01-01
        相关资源
        最近更新 更多