Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#在csv文件中将字符串分隔为不同的单元格_C#_.net_Csv - Fatal编程技术网

c#在csv文件中将字符串分隔为不同的单元格

c#在csv文件中将字符串分隔为不同的单元格,c#,.net,csv,C#,.net,Csv,如何将每一行分隔成不同的单元格?我用逗号分隔信息行,但我想同样地分隔它们 string path = @"..\Debug\data\IrisData.csv"; var content = File.ReadAllText(path); var contentLines = content.Split('\n'); var csv = from line in contentLines sel

如何将每一行分隔成不同的单元格?我用逗号分隔信息行,但我想同样地分隔它们

        string path = @"..\Debug\data\IrisData.csv";
        var content = File.ReadAllText(path);

        var contentLines = content.Split('\n');
        var csv = from line in contentLines
                  select line.Split(',').ToArray();
        using (StreamWriter sw = new StreamWriter(path, true))
        {
            foreach (var data in csv)
            {
                foreach (var cell in data)
                {
                    var newline = string.Format("{0}", cell);
                    newline = cell != data[4] ? newline + "," : newline;
                    sw.Write(newline);
                }
                sw.Write(Environment.NewLine);
            }
        }


        Console.WriteLine("Press any key to continue...");
        Console.ReadLine();

我不确定我是否理解你的问题

您是否正在尝试分离csv并将其重新组合在一起?至少你的代码对我来说是这样的

我不喜欢对每个变量使用
var
,因为它可能导致错误或意外行为。我想这也发生在你身上

String.Split(char)
返回一个
String[]

        foreach (var data in csv) // csv is a string[] -> data is a string
        {
            // data is a string which is basically a char[] -> cell is a char
            // I don't think, that's what you wanted...
            foreach (var cell in data) 
            {
                var newline = string.Format("{0}", cell);
                newline = cell != data[4] ? newline + "," : newline;
                sw.Write(newline);
            }
            sw.Write(Environment.NewLine);
        }

也许你可以告诉我,你真正想做什么,我可以帮你:)

你可以这样尝试:

newline = cell != data[4] ? "\"" + newline + "\"," : newline;

希望这对您有所帮助

您可以看看TextFieldParser:

确保添加对Microsoft.VisualBasic程序集的引用,并使用Microsoft.VisualBasic.FileIO添加

            using (TextFieldParser parser = new TextFieldParser(@"..\Debug\data\IrisData.csv"))
        {
            parser.SetDelimiters(new String[] { "," });

            while (!parser.EndOfData)
            {
                string[] fields = parser.ReadFields();


                // fields will contain every seperated cell

            }

        }

“;”
将数据分离到不同的单元格。

您是否收到任何错误,或者您的代码的输出是否与预期的不同。我得到了行信息,例如“萼片、萼片、花瓣、花瓣、物种”,而不是列分离的数据,如:“萼片”、“萼片”、“花瓣”、“花瓣”、“物种”,您应该尝试以这种方式拆分:
字符串[]contentLines=content.Split(Environment.NewLine.ToCharArray(),StringSplitOptions.RemoveEmptyEntries)\n
上拆分code>可能会留下一些
\r
,弄乱您的列。
var newline=string.Format(“{0}{1}”,Environment.newline,cell)现在的输出是什么?我的csv文件中有一行信息:sepal_l,sepal_w,petal_l,petal_w,物种。我想把每个数据(由coma进行比较)放在不同的列中。嗯,我认为csv已经包含了你的数据。。您可以通过csv[lineNumber,columnNumber]
访问它。可以,但我无法将其写入csv文件。每个下一个单元格都被附加到前一个单元格上,这意味着我得到了相同的结果。