C#读线逃逸回车/换行?
您好,我编写了一个非常简单的C#程序,从命令行使用C#Regex,而不是依赖MS Word搜索和替换。问题是,当我在Regex.Replace-through-Console.ReadLine()中使用“\r\n”作为替换字符串时,它将替换为th 4个字符“\r\n”,而不是真正的回车换行符。但是,如果我写入C#读线逃逸回车/换行?,c#,regex,readline,C#,Regex,Readline,您好,我编写了一个非常简单的C#程序,从命令行使用C#Regex,而不是依赖MS Word搜索和替换。问题是,当我在Regex.Replace-through-Console.ReadLine()中使用“\r\n”作为替换字符串时,它将替换为th 4个字符“\r\n”,而不是真正的回车换行符。但是,如果我写入string replace=“\r\n”它会按预期工作,即用回车换行符替换字符串。示例输入字符串为“Woodcock,american”(后跟\r\n)。根据代码,它生成“Woodstoc
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);
}
如果您取消了scape
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();
控制台输入/输出:
Find: Woodstock
Replace: Woodstock\r\n
initial:
(BEGIN)
Woodstock, American
(END)
final:
(BEGIN)
Woodstock
, American
(END)
查找:伍德斯托克
替换:Woodstock\r\n
首字母:
(开始)
美国伍德斯托克
(完)
最终:
(开始)
伍德斯托克
美国人
(完)
您是否尝试过使用Environment.NewLine而不是\r\n。@Bearcat9425不应该有任何区别\在控制台中不是转义字符。如果希望
“\\r”
成为“\r”
,则需要进行替换。使用\转义在类似C的语言中是正常的,但在VB中则不是。对于控制台来说,实现某种特定于语言的转义风格是很奇怪的。可能是@Bearcat925的重复我不确定你的意思。问题是,ReadLine似乎把我的输入当作垃圾,我不知道该如何处理。我不确定Environment.NewLine会出现在哪里。如果没有好的“给定X,期望Y”场景,就很难完全理解你在追求什么。当然,这个答案是对你实际意思的猜测。