C#所以我需要拆分一个字符串,我想

时间:2015-06-04 23:41:38

标签: c# .net

所以我有这个应用程序,我从很久以前的人那里继承了。该应用程序的要点是它读入一个大约有5800行的.cvs文件,将其复制到另一个.cvs,它在删除了一些东西之后每次创建新的,#,',& 。好吧一切都很好,或者直到大约一个月前。所以我开始检查它,到目前为止我发现的是电子表格中缺少大约131个项目。现在我读到一个地方,一个字符串可以容纳的最大数据量超过1,000,000,000个字符,而我的电子表格就在那之下,大约有800,000个字符,但我唯一能想到的就是字符串对象。

所以无论如何,这是有问题的代码,这篇文章出现

从现有字段读入并输出到新文件:

StreamReader s = new StreamReader(File);

//Read the rest of the data in the file.
string AllData = s.ReadToEnd();

//Split off each row at the Carriage Return/Line Feed
//Default line ending in most windows exports.
//You may have to edit this to match your particular file.
//This will work for Excel, Access, etc. default exports.
string[] rows = AllData.Split("\r\n".ToCharArray(), System.StringSplitOptions.RemoveEmptyEntries);

//Now add each row to the DataSet
foreach (string r in rows)
{
    //Split the row at the delimiter.

    string[] items = r.Split(delimiter.ToCharArray());

    //Add the item
    result.Rows.Add(items);
}

如果有人能帮助我,我会非常感激。我要么想弄清楚如何更好地分割数据,要么我需要找出为什么它将现有excel文件中的最后131行删除到新的excel文件。

2 个答案:

答案 0 :(得分:3)

执行此操作的一种更简单的方法是,因为您对行使用"\r\n",只需使用内置的行读取方法:File.ReadLines(path)

foreach(var line in File.ReadLines(path))
{
   var items = line.Split(',');
   result.Rows.Add(items);
}

答案 1 :(得分:0)

您可能需要查看TextFieldParser类,它是Microsoft.VisualBasic.FileIO命名空间的一部分(是的,您可以将它与C#代码一起使用)

有些事情:

using(var reader = new TextFieldParser("c:\\path\\to\\file"))
{
    //configure for a delimited file
    reader.TextFieldType = FieldType.Delimited;

    //configure the delimiter character (comma)
    reader.Delimiters = new[] { "," };

    while(!reader.EndOfData)
    {
        string[] row = reader.ReadFields();
        //do stuff
    }
}

当该字段可能包含分隔符时,此类可以帮助解决将行拆分为字段的一些问题。