繁体   English   中英

使用StreamReader在.CSV文件中合并2行

[英]Merge 2 lines in .CSV file using StreamReader

我目前正在尝试将.csv文件中的某些行合并。 该文件遵循特定的格式,该格式由“,”分隔,最后一个元素使用\\ n ascii代码。 这意味着最后一个元素将放在新行上,而我返回的数组只有一个Element。 我希望将此元素与上面的线合并。

所以我的行是:

192.168.60.24, ACD_test1,86.33352, 07/12/2014 13:33:13, False, Annotated, True,"Attribute1
Attribute 2
Attribute 3"
192.168.60.24, ACD_test1,87.33352, 07/12/2014 13:33:13, False, Annotated, True

是否可以将新的线属性与上面的线合并/合并?

我的代码如下所示:

var reader = new StreamReader(File.OpenRead(@path));
                string line1 = reader.ReadLine();
                if (line1.Contains("Server, Tagname, Value, Timestamp, Questionable, Annotated, Substituted"))
                {
                    while (!reader.EndOfStream)
                    {
                        List<string> listPointValue = new List<string>();
                        var line = reader.ReadLine();
                        var values = line.Split(',');

                        if (values.Count() < 2)
                        {
                            //*****Trying to Add Attribute to listPointValue.ElememtAt(0) here******
                        }
                        else
                        {
                            foreach (string value in values)
                            {
                            listPointValue.Add(value);
                            }
                            allValues.Add(listPointValue);
                        }
                    }
                   // allValues.RemoveAt(0);
                    return allValues;
                }

我认为您想在执行allValues.Add之前先阅读下一行。 这样,您可以决定是否将前一行添加到allValues中(开始新行)。 这使您了解我的意思:

var reader = new StreamReader(File.OpenRead(@path));
string line1 = reader.ReadLine();
if (line1.Contains("Server, Tagname, Value, Timestamp, Questionable, Annotated, Substituted"))
{
    List<string> listPointValue = new List<string>();

    // Add first line to listPointValue
   var line = reader.ReadLine();
   var values = line.Split(',');
   foreach (string value in values)
   {
        listPointValue.Add(value);
   }

   while (!reader.EndOfStream)
   {
        // Read next line
        line = reader.ReadLine();
        values = line.Split(',');

        // If next line is a full line, add the previous line and create a new line
        if (values.Count() > 1)
        {
            allValues.Add(listPointValue);
            listPointValue = new List<string>();
        }

        // Add values to line
        foreach (string value in values)
        {
             listPointValue.Add(value);
        }
    }
    allValues.Add(listPointValue);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM