是否有一种简单的方法可以根据字符串的第4个字符对列表进行排序?我有一份在他们面前有代码的国家名单; “我们美国”是我名单中的一个字符串,我想在完整的国家名称之前忽略代码(“我们”)。
答案 0 :(得分:3)
list.Sort((x, y) => x.Substring(3).CompareTo(y.Substring(3)));
答案 1 :(得分:1)
与其他答案不同,这种执行排序 的方法不会 创建不必要的子字符串。相反,它利用现有的string.Compare(strA, indexA, strB, indexB, length)重载接受字符串偏移进行比较。
list.Sort((s1, s2) => string.Compare(s1, 3, s2, 3, int.MaxValue));
还有其他有用的string.Compare
重载,它们也接受偏移值,可用于调整比较行为。 (例如:忽略案件等)
答案 2 :(得分:0)
这应该这样做 - List<string>
是你的原始列表变量
[List<string>].OrderBy(s => s.Substring(3)).ToList();
这有效
var l = new List<string>(){"us unites states","uk united kingdom","ca canada"};
foreach (var s in l.OrderBy(s => s.ToLower().Substring(3)).ToList())
Console.WriteLine(s);
注意ToLower
,因此您不要将大写字母与小写字母进行比较(如果您同时使用这两种字母)