CSV行拆分成字符串数组问题

PaN*_*1Me 1 c# string split

你会如何将这一行拆分为字符串数组

问题是Rutois,因为你不能直接用','分隔符拆分..

543472,"36743721","Rutois, a.s.","151","some name","01341",55,"112",1
Run Code Online (Sandbox Code Playgroud)

谢谢

Dar*_*rov 7

我建议您使用CSV解析器而不是自己滚动.

FileHelpers是一个很好的工作库.

  • +1.http://www.codeproject.com/KB/database/CsvReader.aspx是一个很好的轻量级.@ liho1eye:它可能很简单,但重新发明轮子并不能为您的客户创造价值. (2认同)

Guf*_*ffa 6

您可以使用正则表达式从行中选择值:

string line ="543472,\"36743721\",\"Rutois, a.s.\",\"151\",\"some name\",\"01341\",55,\"112\",1";
var values = Regex.Matches(line, "(?:\"(?<m>[^\"]*)\")|(?<m>[^,]+)");
foreach (Match value in values) {
  Console.WriteLine(value.Groups["m"].Value);
}
Run Code Online (Sandbox Code Playgroud)

输出:

543472
36743721
Rutois, a.s.
151
some name
01341
55
112
1
Run Code Online (Sandbox Code Playgroud)

这当然假设您实际上已经在字符串中获得了完整的CSV记录.请注意,在CSV记录值可以包含换行符,所以从CSV文件获取记录不能简单地拆分它换行来完成.