2

嗨,我编写了一个非常简单的 C# 程序,从命令行使用 C# Regex,而不是依赖 MS Word 搜索和替换。问题是,当我通过 Console.ReadLine()在 Regex.Replace 中使用“\r\n”作为替换字符串时,它会替换为第 4 个字符“\r\n”而不是真正的回车换行符。但是,如果我编写string replace= "\r\n"它按预期工作,即用回车换行符替换字符串。示例输入字符串为“Woodcock, American”(后跟 \r\n)。由于代码是它产生“Woodstock\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);
        System.Threading.Thread.Sleep(3000);
        Clipboard.SetText(final);
    }
4

1 回答 1

1

如果你 unescape replace(并且可能find),它应该做你需要的。

string initial = "Woodstock, American" + Environment.NewLine;
Console.Write("Find: ");
string find = Console.ReadLine();
Console.Write("Replace: ");
string replace = Console.ReadLine();
replace = Regex.Unescape(replace);
string final = Regex.Replace(initial, find, replace);

Console.WriteLine("initial:{0}(BEGIN){0}{1}{0}(END){0}", Environment.NewLine, initial);
Console.WriteLine("final:{0}(BEGIN){0}{1}{0}(END){0}", Environment.NewLine, final);
Console.ReadLine();

控制台 I/O:

找到:伍德斯托克
替换: 伍德斯托克\r\n
最初的:
(开始)
美国伍德斯托克

(结尾)

最后:
(开始)
伍德斯托克
, 美国人

(结尾)

MSDN 正则表达式.Unescape

于 2013-10-01T20:17:21.080 回答