用相同的单个字符替换连续的字符

Sac*_*hag 9 c#

我只是想知道是否有一种简单的方法可以做到这一点.即用相同的字符替换连续字符的出现次数.

例如: - 如果我的字符串是"likeeeee tttthhiiissss",那么我的最终输出应该是"像这样的东西".

该字符串也可以包含特殊字符,包括空格.

你们能提出一些简单的方法吗?

ale*_*exn 13

这应该这样做:

var regex = new Regex("(.)\\1+");
var str = "something likeeeee!! tttthhiiissss";

Console.WriteLine(regex.Replace(str, "$1")); // something like! this
Run Code Online (Sandbox Code Playgroud)

正则表达式将匹配任何字符(.),\\1+并匹配第一组中捕获的任何字符.

  • 谢谢你的回答!这对我来说很有用,但我最终在一行中使用它并且必须使用@符号将正则表达式模式设置为常量,这需要删除其中一个反斜杠.我只是寻找连续连字符,所以我看起来更像这样:`str = Regex.Replace(str,@"(\ - )\ 1 +","$ 1");` (2认同)

Gab*_*ams 5

string myString = "something likeeeee tttthhiiissss";

char prevChar = '';
StringBuilder sb = new StringBuilder();
foreach (char chr in myString)
{
    if (chr != prevChar) {
        sb.Append(chr);
        prevChar = chr;
    }
}
Run Code Online (Sandbox Code Playgroud)