1

重複の可能性:
C# での CSV ファイルの解析

パイプ区切りファイルを解析する C# アプリケーションがあります。Regex.Split メソッドを使用します。

Regex.Split(line, @"(?<!(?<!\\)*\\)\|")

しかし最近、データ フィールドの 1 つにパイプが含まれているデータ ファイルが見つかりました。問題のデータ フィールドは引用符で囲まれた識別子を使用していたため、Excel で開くと正しく開きます。

たとえば、次のようなファイルがあります。

Field1|Field2|"フィールド 3 には引用符の中に | があります"|Field4

上記の正規表現を使用すると、次のように解析されます。

Field1
Field2
Field 3 は
引用符で囲まれています
Field4

私がしたいとき

Field1
Field2
Field 3 には | があります。引用符内
Field4

私はかなりの量の調査を行いましたが、Regex.Split を取得してファイルをパイプで分割することはできませんが、引用された識別子を尊重しているようです。どんな助けでも大歓迎です!

4

1 に答える 1

1

これは、トリックを行うように見えるよりも、一緒に投げた簡単な式です。

"([^"]+)"|([^\|]+)

あなたの式は\でも何かをしているように見えますが、この式に他のニーズを追加する必要があるかもしれません. 質問で説明されていないため、回答でそれらを無視しました。したがって、それらが存在する理由を知らずに解決策を提供することはできません。実際、それらはまったく存在する必要がない場合があります。

また、私の式は空のフィールドを無視します (つまり、1||2|3 は 1、2、および 3 のみとして出力されます)。これが必要かどうかはわかりません。それに合わせた表現に変えることもできます。

とにかくこれが役立つことを願っています。

于 2012-08-13T10:33:08.490 に答える