您好,我编写了一个非常简单的 C# 程序,从命令行使用 C# Regex,而不是依赖于 MS Word 搜索和替换。问题是,即使正则表达式可以很好地识别 \r 和 \n ,当我尝试用其中任何一个替换字符串时,它似乎用转义字符而不是字符本身替换它。
[STAThread]
static void Main(string[] args)
{
string initial = Clipboard.GetText();
Console.Write("Find: ");
string find = Console.ReadLine();
Console.Write("Replace: ");
string replace = Console.ReadLine();
string final = Regex.Replace(initial, find, replace);
Clipboard.SetText(final);
}
例如,我从剪贴板输入的字符串将是“Woodcock,american”(末尾带有回车换行符)。模式将是 @",.+\r",它匹配得很好,替换字符串将是 @"\r\n"。这会产生字符串“Woodcock\r\n”(为了清楚起见,它们是字母 r 和 n)。我究竟做错了什么?
edit:Anirudh 的答案部分解决了我的问题,我相应地更新了代码。然而,似乎当我向 ReadLine 输入“\r\n”时,它也会以某种方式转义,而如果我写string replace = "\r\n"
它实际上用回车换行符替换字符串。链接到新问题:C# ReadLine 转义回车/换行符?
这是因为您使用的是逐字字符串,即@""
这会逃避 \r\n 将它们视为文字而不是特殊字符!
替换字符串应该是"\r\n"
NOT @"\r\n"
解决您的其他问题
Output=Regex.Replace(input,"\\r?\\n","\r\n");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)