C# 正则表达式转义和替换
Posted
技术标签:
【中文标题】C# 正则表达式转义和替换【英文标题】:C# Regex escape and replace 【发布时间】:2019-07-31 15:05:00 【问题描述】:我有一个将文档发送到电子邮件的 API。我正在使用一个允许我指定电子邮件的参数。它要求换行符为 Json 格式 (\n)。我正在使用正则表达式来转义文本框文本,如下所示。
string JsonMessage = string.Format("0\n1", System.Text.RegularExpressions.Regex.Escape(this.txtMailMessage.Text), System.Text.RegularExpressions.Regex.Escape(this.txtMailMessage.Text));
JsonMessage = JsonMessage.Replace("\r", "");
Console.WriteLine(JsonMessage);
这是一个示例输出:5\r\n5\r\n5
如图所示,我正在尝试替换 \r 以实现 Json 中的“换行符”。所以它看起来像这样:5\n5\n5
我似乎无法理解的是,当我投射 JsonMessage = JsonMessage.Replace("\r", "");
时,它不会替换 \r
【问题讨论】:
试试JsonMessage.Replace("\\r", "");
在尝试替换之前将 JsonMessage 字符串 输出到控制台。请注意,如果您在输出中看到字面上的 \r - 我的意思是字面上的反斜杠后跟一个 r -,那么您的 JsonMessage 中没有任何“\r”。 "\r"
是一个只有一个字符的字符串;该字符是 CR(回车)。此字符不可见,因此在控制台输出中看到 \r 将证明您的 JsonMessage 中没有 "\r"
,而是 "\\r"
。
@G5W 谢谢你成功了!
【参考方案1】:
您需要使用JsonMessage.Replace("\\r", "");
\\
将被解释为单个反斜杠。
【讨论】:
【参考方案2】:不要尝试用“\n”替换“\r\n”,而不是用任何内容替换“\r\n”
string mystring = "5\r\n5\r\n5";
mystring = mystring.Replace("\r\n", "\n");
这将产生“5\n5\n5”
【讨论】:
以上是关于C# 正则表达式转义和替换的主要内容,如果未能解决你的问题,请参考以下文章