LINQ条件选择和格式

用户名

我有一个字符串,我正在尝试建立一个查询,该查询将特定字符序列替换为字符计数。这是我要执行的操作的一个示例:

agd69dnbd 555 bdggjykbcx 555555 bbb

在这种情况下,我试图仅隔离和计数数字5的出现,因此我的输出应为:

agd69dnbd 3 bdggjykbcx 6 bbb

我当前的代码如下,其中GroupAdjacentBy是一个对字符进行分组和计数的函数,如上所述。

var res = text
.GroupAdjacentBy((l, r) => l == r)
.Select(x => new { n = x.First(), c = x.Count()})
.ToArray();

问题是上述函数对我的字符串中的每个单字符进行分组和计数,而不仅仅是我后面的一个字符。有没有一种方法可以只对需要计数的字符有条件地执行该操作?

约翰娜森·巴克莱

正则表达式是比LINQ更好的工具。

看看这个:

string input = "agd69dnbd555bdggjykbcx555555bbb";

string pattern = @"5+"; // Match 1 or more adjacent 5 character

string output = Regex.Replace(input, pattern, match => match.Length.ToString());

// output = agd69dnbd3bdggjykbcx6bbb

不确定是要替换每5个字符,还是相邻5个字符以上。

如果是后者,只需将模式更改为:

string pattern = @"5{2,}"; // Match 2 or more adjacent 5's

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章