gpt4 book ai didi

c# - 包含以下划线开头的字符串的列表排序

转载 作者:行者123 更新时间:2023-11-30 14:58:37 25 4
gpt4 key购买 nike

所以这是我得到的:我有一个包含这些字符串的列表:“student”、“Students”、“students”、“Student”和“_Students”。

我做了什么:

List<string> sort = new List<string>() { "student", "Students", "students", "Student","_Students" };
List<string> custsort = sort.OrderBy(st => st[0]).ThenBy(s => s.Length)
.ToList();

但这给了我这样的:

Student
Students
_Students
student
students

我想要的是:

_Students
Student
Students
student
students

我不知道如何对它们进行排序,因为该死的下划线位于 ASCII 表中的大写字母和小写字母之间。

最佳答案

您可以使用正则表达式来确定第一个字符是否为字母并对其应用权重。

int GetWeight(char c)
{
return Regex.IsMatch(c.ToString(), @"[a-zA-Z]") ? c : 0;
}

List<string> sort = new List<string>() { "student", "Students", "students", "Student","_Students" };
List<string> custsort =
sort.OrderBy(st => GetWeight(st[0]))
.ThenBy(s => s.Length)
.ToList();

这样,如果您需要任何其他特殊规则,您可以修改 GetWeight 函数,您的 Linq 将不受影响。

关于c# - 包含以下划线开头的字符串的列表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18511387/

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