我有一个 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)]
}
我考虑过(尽管我讨厌这种任务的正则表达式)替换所有"
,'
然后使用模式((?<=(^|',))'|'(?=($|,')))
在行的开头和结尾以及它们被格式化的地方替换所有。但是,脏文件包含一些以 a 结尾的行和一些格式化的 css 样式属性'
"
','
"
","
所以现在我只能摸不着头脑,试图弄清楚如何做到这一点以及如何实现自动化。
有任何想法吗?