如何从双引号中删除换行符
本文关键字:删除 换行符 | 更新日期: 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);