读取csv文件的第一行并保存到列表而不使用','分裂

时间:2016-11-11 13:59:33

标签: c# csv parsing

我有一个csv文件,我需要在第一行读取并将其保存到List。唯一的问题是,在某些文本中有逗号,并且当我不需要它时,它会在字段中间分割。不幸的是我不能改变里面的数据,所以需要留下来。我目前也把数据写入csv所以我想也许不是使用逗号我可以使用不同的字符。有谁知道这是否可能?我一直在研究,但我没有得到正确的答案。以下是我的代码:

using System;
using System.CodeDom;
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace TestJSON
{
    class Program
    {

    static void Main()
    {
            var data = JsonConvert.DeserializeObject<dynamic>(File.ReadAllText(
                          @"C:\Users\nphillips\workspace\2016R23\UITestAutomation\SeedDataGenerator\src\staticresources\seeddata.resource"));
            string fileName = "";            
            var bundles = data.RecordSetBundles;

            foreach (var bundle in bundles)
            {
                var records = bundle.Records;
                foreach (var record in records)
                {
                    var test = record.attributes;
                    foreach (var testagain in test)
                    {
                        // Getting the object Name Ex. Location, Item, etc.
                        var jprop = testagain as JProperty;
                        if (jprop != null)
                        {
                             fileName = jprop.First.ToString().Split('_')[2]+ ".csv";
                        }
                        break;
                    }
                    string header = "";
                    string value = "";
                    foreach (var child in record)
                    {                     
                        var theChild = child as JProperty;
                        if (theChild != null && !theChild.Name.Equals("attributes"))
                        {
                            header += child.Name + ",";
                            value += child.Value.ToString() + ",";
                        }
                    }
                    value += "+" + Environment.NewLine;

                    if (!File.Exists(fileName))
                    {
                        header += "+" + Environment.NewLine;
                        File.WriteAllText(fileName, header);
                    }
                    else 
                    {
                        // Need to read in here
                        var readCSV = new StreamReader(fileName);
                        var splits = readCSV.ReadLine();

                    }
                    File.AppendAllText(fileName, value);
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

您需要知道文件是如何分隔的。我猜这个文件是制表符分隔的,所以要分开。

假设您的行名为myCSVLine ... I.E

string seperator = "\t";
string[] splitLine = myCSVLine.Split(seperator.ToCharArray());

splitLine现在拥有所有字符串,包括逗号