按字母顺序对字符串数组进行排序,忽略数字和符号

quo*_*ian 4 c# sorting string

我正在尝试对包含数字的字符串数组进行排序,例如:

Original array = {"09Bananas", "Pears2", "Mangoes39Bad", "100Apples", "Mangoes38Good"}

应该成为:

Sorted array = {"100Apples", "09Bananas", "Mangoes39Bad", "Mangoes38Good", "Pears2"}

但是,当我尝试使用Array.sort(original)它时会出现如下:

{"09Bananas", "100Apples", "Mangoes38Good", "Mangoes39Bad", "Pears2"}

是否有超载Array.sort会使它忽略数字?

谢谢

das*_*ght 6

使用Array.Sort<T>(T[],IComparer<T>)重载,并在比较字符串之前跳过数字.

var array = new[] {
    "09Bananas", "Pears2", "Mangoes39Bad", "100Apples", "Mangoes38Good"
};
Array.Sort(array, (a,b) => {
    a = new string(a.Where(char.IsLetter).ToArray());
    b = new string(b.Where(char.IsLetter).ToArray());
    return a.CompareTo(b);
});
Console.WriteLine(string.Join(", ", array));
Run Code Online (Sandbox Code Playgroud)

LINQ表达式a.Where(char.IsLetter).ToArray()将字符串转换为单个字母的数组.