Regex.Replace rufuses用换行符替换

Æðe*_*tan 2 c# regex

您好,我写了一个非常简单的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);
    }
Run Code Online (Sandbox Code Playgroud)

例如,我从剪贴板输入的字符串将是"Woodcock,american"(最后带有回车换行符).模式将是@",.+\r",匹配正常,替换字符串将是@"\ r \n".这会产生字符串"Woodcock\r \n"(字母r和n只是为了清楚).我究竟做错了什么?

编辑: Anirudh的答案部分解决了我的问题,并相应地更新了代码.但是,当我向ReadLine输入"\ r \n"时,它似乎也以某种方式转义,而如果我写string replace = "\r\n"它实际上用一个回车换行替换该字符串.链接到新问题:C#ReadLine转义回车/换行?

Ani*_*dha 8

这是因为你正在使用逐字字符串,即@""它会逃脱\ r \n将它们视为文字而不是特殊字符!

替换字符串应该是"\r\n" NOT @"\r\n"

解决你的其他问题

  Output=Regex.Replace(input,"\\r?\\n","\r\n");
Run Code Online (Sandbox Code Playgroud)