使用C#中的Regex删除引号内的换行符

时间:2017-10-02 07:56:04

标签: c# regex

我需要删除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中所述。我缺少的是如何替换正则表达式匹配中的新行。

1 个答案:

答案 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();
}