我有以下 C# 代码,可以按字典顺序(字母顺序)对字符串进行排序。
string str = "ACGGACGAACT";
IEnumerable<string> sortedSubstrings =
Enumerable.Range(0, str.Length)
.Select(i => str.Substring(i))
.OrderBy(s => s);
结果:
0 AACT
1 ACGAACT
2 ACGGACGAACT
3 幕
4 CGAACT
5 CGGACGAACT
6 CT
7 通用会计准则
8 GACGAACT
9 GACGAACT
10吨
但是我想通过在字典排序过程中跳过第 3 个和第 4 个字符来增强这种排序
在这种情况下,词典排序将与上面的不同。
结果:
0 机管局[CT
1 AC[T
2 AC[GG]ACGAACT
3 AC[GA]ACT
4 CG[GA]CGAACT
5 CG[AA]CT
6 CT
7 GA[CG]AACT
8 GA[AC]T
9 GG[AC]GAACT
10吨
我怎样才能做到这一点?
最佳答案
这可以通过调整传递给 OrderBy
的 lambda 来完成。应该这样做:
var sortedSubstrings =
Enumerable.Range(0, str.Length)
.Select(i => str.Substring(i))
.OrderBy(s => s.Length < 3 ? s : s.Remove(2, Math.Min(s.Length - 2, 2)));
编辑:更正了差一错误。
关于c# - 如何在按字典顺序对字符串进行排序时忽略/跳过 'n' 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814461/