Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#读线逃逸回车/换行?_C#_Regex_Readline - Fatal编程技术网

C#读线逃逸回车/换行?

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

您好,我编写了一个非常简单的C#程序,从命令行使用C#Regex,而不是依赖MS Word搜索和替换。问题是,当我在Regex.Replace-through-Console.ReadLine()中使用“\r\n”作为替换字符串时,它将替换为th 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);
    }

如果您取消了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”场景,就很难完全理解你在追求什么。当然,这个答案是对你实际意思的猜测。