gpt4 book ai didi

c# - 大小写敏感排序,大写最后

转载 作者:太空狗 更新时间:2023-10-29 20:35:54 24 4
gpt4 key购买 nike

我想对一个 List 进行排序,最后用大写字母区分大小写,即按顺序

a,aBC,b,bXY,c,A,Ax,B,C,...

我试过了

Comparison<string> c = (string x1,string x2) => StringComparer.Ordinal.Compare(x1,x2);
list.Sort(c);

但它返回

A,Ax,B,C,a,aBC,b,bXY,c,...

是否有任何预定义的方法来执行此操作,或者我需要自己摆弄一些东西吗?

编辑:因为“大写字母最后”似乎已经够难了,所以我暂时保留了数字。

最佳答案

最后我选择了@JohnTortugo 的建议。谢谢约翰,非常简单的想法,简短且易于实现!

  1. 通过将 0x20 与每个字节进行异或来交换字符串中的大小写(假定为 ASCII 编码):

    static string swapUpperLower(string s)
    {
    return System.Text.Encoding.ASCII.GetString(System.Text.Encoding.ASCII.GetBytes(s).Select(c => (byte)(c^0x20)).ToArray());
    }
  2. 排序前后交换列表中每个字符串的大小写

        Comparison<string> c = (string x1,string x2) => StringComparer.Ordinal.Compare(x1,x2);

    sl = sl.Select(s => swapUpperLower(s)).ToList();
    sl.Sort(c);
    sl = sl.Select(s => swapUpperLower(s)).ToList();

结果:

一个广播公司bbXYC一种斧头乙C

关于c# - 大小写敏感排序,大写最后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49167692/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com