【发布时间】:2013-10-01 19:45:36
【问题描述】:
您好,我编写了一个非常简单的 C# 程序,从命令行使用 C# Regex,而不是依赖于 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);
}
【问题讨论】:
-
您是否尝试过使用 Environment.NewLine 而不是 \r\n 。
-
@Bearcat9425 这应该没什么区别
-
\ 不是控制台中的转义字符。如果您希望
"\\r"成为"\r",则需要进行替换。使用 \ 转义在类 C 语言中是正常的,但在 VB 中则不然。控制台实现某些特定于语言的转义样式会很奇怪。 -
@Bearcat925 我不确定你的意思。问题是 ReadLine 似乎将我的输入视为垃圾,我不知道如何解决这个问题。我不确定 Environment.NewLine 会出现在哪里。