您好我要解析一个CSV文件。 CSV文件用|分隔性格。到现在为止还挺好。但是只有一个字段用“char”括起来。 例如
field1|field2|"field3"|field4
当我设置
时HasFieldsEnclosedInQuotes
为true我将成为异常,否则解析CSV文件会出错。你能帮帮我吗?
答案 0 :(得分:0)
我还没有看过一种文化,'|'是csv分隔符...
总而言之,
var line = "field1|field2|\"field3\"|field4";
var pattern = string.Format("{0}(?=([^\"]*\"[^\"]*\")*[^\"]*$)", Regex.Escape("|"));
//{0} in pattern is CSV separator. To get current use System.Globalization.CultureInfo.CurrentCulture.TextInfo.ListSeparator
var splitted = Regex.Split(line, pattern, RegexOptions.Compiled | RegexOptions.ExplicitCapture);
foreach (var s in splitted)
Console.WriteLine(s);
输出:
field1
field2
"field3"
field4
Pattern用于使用指定的分隔符从CSV文件中分割单行。包括处理报价等 希望能帮到你。
答案 1 :(得分:-2)
快速而肮脏:你可以考虑剥离“事先使用”的所有用途的文件。
string path = "c:\\test.txt";
string s = System.IO.File.ReadAllText(path, System.Text.Encoding.Default);
s = s.Replace("\"", string.Empty);
System.IO.File.WriteAllText(path, s, System.Text.Encoding.Default);
编辑1: 此方法适用于仅包含一个单词的数字列或字符串列,但在其他情况下可能会破坏您的csv结构(例如,字段存储html内容) - 请注意可能的副作用。