C#ReadLine转义回车/换行?

时间:2013-10-01 19:45:37

标签: c# regex readline

您好我写了一个非常简单的C#程序,从命令行使用C#Regex而不是依赖于MS Word搜索和替换。问题是,当我在Regex.Replace 中通过Console.ReadLine()使用“\ 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);
    }

1 个答案:

答案 0 :(得分:1)

如果您浏览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:

Find: Woodstock
Replace: Woodstock\r\n
initial:
(BEGIN)
Woodstock, American

(END)

final:
(BEGIN)
Woodstock
, American

(END)

MSDN Regex.Unescape