如何从双引号中删除换行符

本文关键字:删除 换行符 | 更新日期: 2023-09-27 18:11:11

我有这样一个场景:

"abcdef
 123sq
 gh"

应重新排列为"abcdef 123sq gh"。

为此,我使用了正则表达式,它运行良好:

Match match = Regex.Match(myString, @""".*""", RegexOptions.Singleline);
if (match.Success) {
  myString= myString.Replace(match.Value, match.Value.Replace("'n", ""));
}

但这不适用于以下情况:

"abc" "def"
asdf123456
"abc"

在上面的例子中,它考虑了第一个和最后一个引号,并将这3行作为一行返回。

如何从双引号中删除换行符

您应该能够简单地用双引号替换新行:

myString = myString.Replace(Environment.NewLine, "'"");

使用字符串。替换为:

供您评论:

但我想替换双引号中的新行

myString = myString.Replace(Environment.NewLine, "'"");
var newstring = Regex.Replace(myString, 
                                @"'""[^'""]*?['n'r]+[^'""]*?'""", 
                                m=>Regex.Replace(m.Value,@"['n'r]",""));

这将转换

"abc" "d
 ef"
asdf123456
"ghi"

"abc" "d ef"
asdf123456
"ghi"

当然,它也适用于您的样品。

您的代码匹配引号之间的任何字符,但它是一个贪婪的表达式,即它匹配尽可能多的字符,这有时意味着匹配多行。

如果您使用非贪婪表达式,它将尽可能匹配几个字符。用途:

Match match = Regex.Match(myString, @""".*?""", RegexOptions.Singleline);