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

8

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

3个回答

21

看起来你只需要使用Array.Sort方法。

Array.Sort(myArray)

有许多重载方法,其中一些使用自定义比较器(类或委托),但默认的排序应该按字母顺序(升序)进行排序,正如您所期望的那样。


1
+1 提到这只是默认行为。它不会按照字母表的反向顺序排序,你需要进行一些技巧或者实现自己的排序。 - Adam Houldsworth
1
如果它们在列表中,则只需使用 .Sort()。 - simendsjo
1
+1 优秀的回答,对于更复杂的排序,我会看一下IComparable接口或Linq的Sort表达式。 - armannvg

2
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);
        }
    }
}

2

Array.Sort还提供了一个谓词重载。您可以在那里指定排序行为:

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()来反转排序顺序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接