Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将RichTextBox文档中的多个\r\n替换为正则表达式?_C#_Regex - Fatal编程技术网

C# 如何将RichTextBox文档中的多个\r\n替换为正则表达式?

C# 如何将RichTextBox文档中的多个\r\n替换为正则表达式?,c#,regex,C#,Regex,我已经试过了。我在RichTextBox中有由运行组成的段落。每次运行都由一个字符串组成,其中嵌入了无、一或多个“\r\n”。如果有多个“\r\n”同时存在,则需要删除除第一个“\r\n”以外的所有“\r\n”,并将剩余的“\r\n”替换为“|”。该文件将有许多这样的段落 也就是说,给定以下字符串: 这是一个\r\n\r\n测试。或\r\n\r\n\r\n此\r\n 我需要这个字符串: 这是一个测试。或者|这个| 如何使用正则表达式(C#.Net 4.5)实现这一点 短暂性脑缺血发作 (我研究过

我已经试过了。我在RichTextBox中有由运行组成的段落。每次运行都由一个字符串组成,其中嵌入了无、一或多个“\r\n”。如果有多个“\r\n”同时存在,则需要删除除第一个“\r\n”以外的所有“\r\n”,并将剩余的“\r\n”替换为“|”。该文件将有许多这样的段落

也就是说,给定以下字符串:

这是一个\r\n\r\n测试。或\r\n\r\n\r\n此\r\n

我需要这个字符串:

这是一个测试。或者|这个|

如何使用正则表达式(C#.Net 4.5)实现这一点

短暂性脑缺血发作 (我研究过类似的问题,但似乎没有弄对:()

编辑: 感谢所有帮助过我的人。对于任何来到这里的人来说,对我来说,正确的答案实际上是我收到的答案的组合。也就是说,这两个答案 在我的情况下工作正常

    Regex.Replace(s, "(\r\n)+", "| ")   
    Regex.Replace(s, @"(\r\n)+","| ")   

以下是一个工作示例:

string s = @"This \r\n is a \r\n\r\n Test. Or, \r\n\r\n\r\n this \r\n.";

string n = Regex.Replace(s, @"(\\r\\n)+", "|");

Console.WriteLine(n);
输出:

这是一个测试


模式末尾的
+
符号表示前面的字符出现一次或多次。这样,它还将捕获多个
\r\n\r\n

以下是一个工作示例:

string s = @"This \r\n is a \r\n\r\n Test. Or, \r\n\r\n\r\n this \r\n.";

string n = Regex.Replace(s, @"(\\r\\n)+", "|");

Console.WriteLine(n);
输出:

这是一个测试


模式末尾的
+
符号表示前面的字符出现了一次或多次。这样,它还将捕获多个
\r\n\r\n

我假定,您有成对的CF/LF字符,而不是
\
+
r
+
\
>+
>
+

如果是这种情况,则不应在此处使用逐字字符串 (实际字符串前面带有
@

写入
@“xx\r\n”
会导致此类字符串包含:

  • 2个字符
  • 反斜杠和
    r
  • 反斜杠和
    n
正则表达式也是如此

如果您不相信,请运行以下代码:

string s = @"This \r\n is a \r\n\r\n Test. Or, \r\n\r\n\r\n this \r\n.";
Console.WriteLine(s);
你应该写:

string s = "This \r\n is a \r\n\r\n Test. Or, \r\n\r\n\r\n this \r\n.";
string n = Regex.Replace(s, "(\r\n)+", "|");
Console.WriteLine(n);

我假设您有成对的CF/LF字符,而不是
\
+
r
+
\
+
\
+
n

如果是这种情况,则不应在此处使用逐字字符串 (实际字符串前面带有
@

写入
@“xx\r\n”
会导致此类字符串包含:

  • 2个字符
  • 反斜杠和
    r
  • 反斜杠和
    n
正则表达式也是如此

如果您不相信,请运行以下代码:

string s = @"This \r\n is a \r\n\r\n Test. Or, \r\n\r\n\r\n this \r\n.";
Console.WriteLine(s);
你应该写:

string s = "This \r\n is a \r\n\r\n Test. Or, \r\n\r\n\r\n this \r\n.";
string n = Regex.Replace(s, "(\r\n)+", "|");
Console.WriteLine(n);

string output=Regex.Replace(“此\r\n是一个\r\n\r\n测试。或\r\n\r\n\r\n此\r\n”、“\\\\r\\\\\n”、“|”);
应能工作
string output=Regex.Replace(“此\r\n\r\n测试。或,\r\n\r\n\r\n\n\r\n此\r\n”、“\\\\\r\\\n”、“\r\n”应能工作;
应能工作