[英]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, "\"");
您的代码匹配引号之间的任何字符,但它是一个贪婪的表达式-即它匹配尽可能多的字符,有时意味着匹配多行。
如果使用非贪婪的表达式,则可能会匹配几个字符。 采用:
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.