如何按字母顺序对字符数组进行排序,以使同一个字母的大写和小写版本相邻?

0 c# arrays sorting

例如

输入数组:'a','b','B','A'

使用Array.Sort()输出:'A','B','a','b'

期望的输出:'A','a','B','b'

我理解为什么'A'被认为低于'a',但我希望它按字母顺序排序,而不是按字符的相应整数排序.

是否有一个Comparer类可以解决问题作为Array.Sort()的第二个参数?

Eri*_*ert 5

是否有一个Comparer类可以解决问题作为Array.Sort()的第二个参数?

对于字符串,您需要使用OrdinalIgnoreCase或InvariantCultureIgnoreCase,具体取决于您是否关心文化敏感性.看到:

哪个通常最好用 - StringComparison.OrdinalIgnoreCase或StringComparison.InvariantCultureIgnoreCase?

对于字符,我不知道这样做的内置比较器,但是编写自己的比较容易.看到

比较char忽略大小写的正确方法是什么?

注意这Array.Sort是一个变异的排序; 如果你想要一个非变异的排序,那么做一个OrderByon ToUpperToUpperInvariant.请注意,这里存在陷阱; 看到

如何按字母顺序对字符数组进行排序,以使同一个字母的大写和小写版本相邻?

还需要注意的是,目前还不清楚你的意图是否是Aa平等的 -在这种情况下A,a,A将是法律秩序,因为等于事情都是平等的,还是你仍想内的排序aA.再次,要小心.如果这就是你想要的那么你也必须做一个ThenBy.