您好,我编写了一个非常简单的 C# 程序来从命令行使用 C# 正则表达式,而不是依赖 MS Word 搜索和替换。问题是,当我在 Regex.Replace through 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);
}
最佳答案
如果您取消转义 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)
关于C# ReadLine 转义回车/换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19124590/