C# 字符串排序...如何比较非序数但以相同字母开头的字符串将小写放在大写后面?

问题描述 投票:0回答:1

假设我有四个字符串 abc、Abc、Bca 和 bca。要求是这些将按字母顺序排序为 Abc、abc、Bca、bca。

使用此代码:

names.Sort((a, b) => string.Compare(a, b));

排序为abc、Abc、bca、Bca。如果我添加 StringComparison.Ordinal 参数,那么它会排序为 Abc、Bca、abc、bca。我可以传递任何参数使其返回 Abc, abc, Bca, bca 而无需额外进行排序吗?

谢谢

c# string list sorting alphabetical-sort
1个回答
0
投票

您可以使用自定义比较器,首先不区分大小写排序,然后仅当字符串相同时才区分大小写排序..

names.Sort((a, b) => {
    var compare = string.Compare(a, b, StringComparison.OrdinalIgnoreCase);
    if (compare != 0)
        return compare;
    compare = string.Compare(a, b, StringComparison.Ordinal);
    return compare;
});

点网小提琴

© www.soinside.com 2019 - 2024. All rights reserved.