我需要删除csv文件中引号内的一些不需要的换行符。
输入文件如下所示:
0433000007880;2;text SOME TEXT;9;TOT
0556000007880;5;SOME TEXT;6;"ECG
22.54 "
0556000007880;6;some other text;2;00535
期望的输出:
0433000007880;2;text SOME TEXT;9;TOT
0556000007880;5;SOME TEXT;6;"ECG 22.54 "
0556000007880;6;some other text;2;00535
现在,引号可由"[^"]*"
标识,如this post中所述。我缺少的是如何替换正则表达式匹配中的新行。
答案 0 :(得分:0)
您可以将正则表达式方法与Trim()
方法结合使用以获得结果。
首先,使用"[^"]*
正则表达式捕获空行,然后用另一个正则表达式替换空格并在结果上调用Trim()
:
string Sanitize(string line)
{
if(!Regex.IsMatch(line, @"""[^""]*"))
return line;
string pattern = @"\s+|"""; // <-- match multiple spaces or " character
Regex regex = new Regex(pattern, RegexOptions.Multiline);
string replacement = @" ";
// replace matched strings with a single space
var replaced = regex.Replace(line, replacement);
// since " at the beginning and end of the string
// are replaced by spaces, trim those spaces before returning
return replaced.Trim();
}