【问题标题】:CSV file parsing issueCSV 文件解析问题
【发布时间】:2014-02-01 07:56:16
【问题描述】:

我正在尝试读取 CSV 文件,并且在某种程度上我是成功的。

我试过了

string[] values = strCurLine.Split(',');

我得到的输出为

array[0]="180"  
array[1]="LMN"  
array[2]="8"  
array[3]="5/17/2012 15:00"  
array[4]=""  
array[5]="name"  
array[6]="2nd row"  
array[7]="step 2 from 4 to 2"  
array[8]="7/9/2012  8:47:00 AM"  

但是当我尝试读取包含 , (逗号)的内容时,它会提供额外的数组项,因此我正在丢失数据。如何替换字符串中的逗号(,)。

我的预期输出是

array[0]="180"  
array[1]="LMN"  
array[2]="8"  
array[3]="5/17/2012 15:00"  
array[4]=""  
array[5]="name"  
array[6]="2nd row, step 2 from 4 to 2"  
array[7]="7/9/2012  8:47:00 AM"  

请推荐

【问题讨论】:

    标签: c# csv import


    【解决方案1】:

    您遇到了所谓的“分隔符冲突”

    您将需要更改分隔符本身,或者您想在其中放置逗号的位置。

    要替换字符串的一部分,您可以使用 String.Replace() - 但在这种情况下这对您没有帮助,因为它会破坏您的 csv 文件。

    所以我的建议如下:

    在文件中使用不同的 csv 定界符(即使它被称为 csv,您也可以使用制表符或分号来定界)——这是您不希望出现在数据中的东西。如果您可以完全控制 csv,则可以放置自己的分隔符(可能是 , 或类似的东西)

    在逗号后面加上某种“例外”。例如,使用 \ 或 , 来定义逗号。然后您可以将整个 csv 文件 string.replace 为一个临时字符 - 完成后将其换回逗号。

    【讨论】:

    【解决方案2】:

    检查这里,我得到了我的问题的答案

    Dealing with commas in a CSV file 回答者 harpo

    谢谢,编码愉快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-31
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多