gpt4 book ai didi

c# - Regex.Replace 拒绝用换行符替换

转载 作者:行者123 更新时间:2023-11-30 19:41:38 25 4
gpt4 key购买 nike

您好,我编写了一个非常简单的 C# 程序来从命令行使用 C# 正则表达式,而不是依赖 MS Word 搜索和替换。问题是,即使 Regex 可以很好地识别\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);
Clipboard.SetText(final);
}

例如,我从剪贴板输入的字符串是“Woodcock, american”(末尾有一个回车换行符)。模式将是 @".+\r",匹配良好,替换字符串将是 @"\r\n"。这会产生字符串“Woodcock\r\n”(为了清楚起见,它们是字母 r 和 n)。我做错了什么?

编辑: Anirudh 的回答部分解决了我的问题,我相应地更新了代码。但是,似乎当我向 ReadLine 输入“\r\n”时它也会以某种方式转义,而如果我写 string replace = "\r\n" 它实际上用回车替换了字符串返回换行符。链接到新问题:C# ReadLine escapes carriage return/newline?

最佳答案

这是因为您使用的是逐字字符串,即 @"" 会转义\r\n 将它们视为文字而不是特殊字符!

替换字符串应该是 "\r\n" NOT @"\r\n"

解决你的其他问题

  Output=Regex.Replace(input,"\\r?\\n","\r\n");

关于c# - Regex.Replace 拒绝用换行符替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com