繁体   English   中英

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

[英]How to remove newline characters from double quotes?

我有这样的情况:

"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"

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

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

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

使用string.Replace像这样:

为您发表评论:

但我想在双引号内替换新行

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

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

如果使用非贪婪的表达式,则可能会匹配几个字符。 采用:

Match match = Regex.Match(myString, @""".*?""", RegexOptions.Singleline);
var newstring = Regex.Replace(myString, 
                                @"\""[^\""]*?[\n\r]+[^\""]*?\""", 
                                m=>Regex.Replace(m.Value,@"[\n\r]",""));

这将转换

"abc" "d
 ef"
asdf123456
"ghi"

"abc" "d ef"
asdf123456
"ghi"

当然,它也适用于您的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM