2017-10-02 43 views
-1

csvファイルの引用符で囲まれた不要な改行を削除する必要があります。引用符で囲まれた改行をC#でRegexで取り除く

入力ファイルは、以下の例のようになります。

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で述べたように、引用符は、"[^"]*"で識別することができます。私が欠けているのは正規表現マッチの中に新しい行を置き換える方法です。

+2

はCSV内のリテラルの二重引用符が存在しません: まず、別の正規表現でスペースを交換し、その結果にTrim()を呼び出し、その後、"[^"]*正規表現で空行をキャプチャ? 「12」、「テキスト」「引用符」、「more」、「456」など? –

+0

@WiktorStribiżewは12インチのルーラーが必要だと言っています。 – BugFinder

+1

あなたの例では、改行だけでなく、引用符も...正しいですか? – Fildor

答えて

0

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(); 
} 
関連する問題