如何将许多char的组合更改为其中一种

Leo*_*kan 2 .net c# regex string

在我的应用程序中,我想编辑字符串(将许多实例作为一个)

例如我有字符串:

string str = "/r/n/r/n/r/n Some text /r/n/r/n/r/n 45678123";
Run Code Online (Sandbox Code Playgroud)

想要的结果:

"/r/n Sometext /r/n 45678123";
Run Code Online (Sandbox Code Playgroud)

功能如下:

string newStr = str.MakeToOneInstance("/r/n");
Run Code Online (Sandbox Code Playgroud)

我需要让它变得动态(在我的例子中,我不知道我有多少/ r/n组合)

它可以是任何组合的另一个例子 - > "dodo you have an answer";

string newStr = str.MakeToOneInstance("do"); -> "do you have an answer";
Run Code Online (Sandbox Code Playgroud)

我知道我可以制作字符串扩展方法,它将使用正则表达式,但问题是我是否有类似于.Net的内容或者可能是原始的方式来执行...

Tho*_*oub 7

您可以使用 Regex.Replace(input, @"(?:\r\n){2,}", Environment.NewLine)

这将替换\r\n单个新行的多个出现.


你可以把它放在这样的扩展中:

public static class MyExtensions
{
    public static string MakeToOneInstance(this String str, string toReplace)
    {
        return Regex.Replace(str, string.Format("\\b(?:{0}){1}\\b", Regex.Escape(toReplace), "{2,}"), toReplace);
    }
}   
Run Code Online (Sandbox Code Playgroud)

并按照您的意愿使用它.

例:

"oooooo loop".MakeToOneInstance("o")
"o loop"
Run Code Online (Sandbox Code Playgroud)