我有一个字符串,我正在尝试建立一个查询,该查询将特定字符序列替换为字符计数。这是我要执行的操作的一个示例:
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] 删除。
我来说两句