您好我写了一个非常简单的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);
}
答案 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)