c# - 如何在按字典顺序对字符串进行排序时忽略/跳过 'n' 元素

标签 c# linq algorithm sorting

我有以下 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/

相关文章:

c# - 使用 Google map 作为商店定位器

c# - 自定义 WebView 在模拟器中工作但不在物理设备中工作。赛马林

.net - LINQ查询是否有很多开销?

c# - 如何在 JOIN 扩展方法中实现左连接

c# - 如何创建一个具有给定值 (0) 的 BCC( block 校验字符)的字节数组?

java - 在最后一个 block 写入插入排序代码 if 语句是否有意义?

c# - 依赖注入(inject) : ASP vNext. 这是如何工作的?

c# - 在 Where LINQ 查询中使用 Contains()

php - 如何在 PHP 中编写此算法?

c# - 使用 Fluent API 的 EF 外键