阅读CSV问题

时间:2013-08-21 21:40:16

标签: c# csv

我正在尝试阅读csv

以下是样本。

"0734306547          ","9780734306548       ","Jane Eyre Pink PP                       ","Bronte Charlotte                        ","FRONT LIST",20/03/2013 0:00:00,0,"PAPERBACK","Y","Pen"

以下是我使用读取CSV

的代码
public void readCSV()
        {
            StreamReader reader = new StreamReader(File.OpenRead(@"C:\abc\21-08-2013\PNZdatafeed.csv"),Encoding.ASCII);
            List<string> ISBN = new List<String>();

            while (!reader.EndOfStream)
            {
                string line = reader.ReadLine();
                if (!String.IsNullOrWhiteSpace(line))
                {
                    string[] values = line.Split(',');
                    if (values[9] == "Pen")
                    {
                        ISBN.Add(values[1]);
                    }
                }
            }
            MessageBox.Show(ISBN.Count().ToString());

        }

我无法将其值if (values[9] == "Pen")进行比较,因为在调试代码时,values[9]值为\"Pen\""

我如何摆脱特殊字符。?

1 个答案:

答案 0 :(得分:1)

这里的问题是,每当您找到,并且保留这​​样的数据时,您就会分割该行。例如,如果这是您正在阅读的行:

 "A","B","C"

你用逗号分隔它,你会得到"A""B""C"作为你的数据。根据您的描述,您不希望数据周围有引号。

扔掉字符串周围的引号:

  1. 检查最左边的字符是否为"
  2. 如果是,请检查最右边的字符是否为"
  3. 如果是,请删除最左侧和最右侧的字符。
  4. 在伪代码中:

     if (data.left(1) == "\"" && data.right(1) == "\"") {
          data = data.trimleft(1).trimright(1)
     }
    

    此时您可能会遇到一些问题(我不确定您有多少经验)。如果这些中的任何一个适用于你,请随时问他们,我会进一步解释。

    1. "\""是什么意思?
    2. 如何提取字符串的最左侧/最右侧字符?
    3. 如何提取字符串的中间部分?