C# ReadLine 转义回车/换行符?

标签 c# regex readline

您好,我编写了一个非常简单的 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)

MSDN Regex.Unescape

关于C# ReadLine 转义回车/换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19124590/

相关文章:

java - 正则表达式匹配 "PATH environment variable"之类的字符串

javascript - 如何从正则表达式的结果中获取数组

java - 如何捕获这个带有引号的组?

c - 在 C 中静态使用 readline(编译和链接)

c# - 在控制台窗口中写入希伯来字符,C#

c# - LINQ to XML 克隆

c# - 获取不同 HttpContext 的端点

readline - 使用 GNU Readline;如何在同一程序中添加 ncurses?

c# - 数学表达式问题

c# - 在运行时从 txt 文件更新文本框而不单击 "refresh"