処理する必要がある CSV ファイルがありますが、これはちょっとした悪夢です。本質的には次のとおりです
"Id","Name","Description"
"1","Test1","Test description text"
"2","Test2","<doc><style>body{font-family:"Calibri","sans-serif";}</style><p class="test_class"
name="test_name">Lots of word xdoc content here.</p></doc>"
"guid-xxxx-xxxx-xxxx-xxxx","Test3","Test description text 3"
車輪を再発明するのではなく、 File Helpersライブラリを使用して CSV を処理しています。ただし、引用符を含むエスケープされていない Word xdoc xml を含む説明フィールドが原因で、各レコードの開始点と終了点になるとかなり混乱します。
以下は、マッピング クラスの例です。
[DelimitedRecord(","), IgnoreFirst(1), IgnoreEmptyLines()]
public class CSVDoc
{
#region Properties
[FieldQuoted('"', QuoteMode.AlwaysQuoted), FieldTrim(TrimMode.Both)]
public string Id;
[FieldQuoted('"', QuoteMode.AlwaysQuoted), FieldTrim(TrimMode.Both)]
public string Name;
[FieldQuoted('"', QuoteMode.AlwaysQuoted), FieldTrim(TrimMode.Both)]
public string Description;
[FieldQuoted('"', QuoteMode.AlwaysQuoted), FieldTrim(TrimMode.Both)]
}
私は(この種のタスクの正規表現が嫌いであるにもかかわらず) all"
を置き換えてから、 pattern を'
使用して、行の最初と最後、およびそれらがフォーマットされている場所でallを置き換えることを検討しました。ただし、ダーティ ファイルには、a で終わる行と、フォーマットされた css スタイル属性がいくつか含まれています。((?<=(^|',))'|'(?=($|,')))
'
"
','
"
","
そのため、これを行う方法と自動化する方法を理解しようとして頭を悩ませています。
何か案は?