从文本文件中读取并将每行拆分为不同的字符串

时间:2016-10-29 14:58:15

标签: c# .net winforms text-files

我必须从包含以下格式的文本文件中读取

PRODUCTID PRODUCTNAME CUSTOMERID CUSTOMERNAME AMOUNT.

文本文件包含11行,对于每一行,我必须存储每个例如。 productid为一个字符串,productname为一个字符串。

我试过这样只存储每行的长度..

   List<string> list = new List<string>();
        using (var reader = new StreamReader(@"Budget.txt"))
        {

            string line;
            while ((line = reader.ReadLine()) != null)
            {               
                list.Add(line);
            }
        }     

编辑:创建一个包含数据的类

3 个答案:

答案 0 :(得分:1)

创建一个展示文件行的类,如下所示:

public class Procuct {
    public string ProductId {get;set;}
    public string ProductName {get;set;}
    public string CustomerId {get;set;}
    public string CustomerName {get;set;}
    public string Amount{get;set;}
}

然后创建一个产品列表来存储它们:

    List<Procuct> list = new List<Procuct>();
    using (var reader = new StreamReader(@"Budget.txt"))
    {

        string line;
        while ((line = reader.ReadLine()) != null)
        {               
            var temp = line.Split(" ");
            list.Add(new Product{
                ProductId = temp[0],
                ProductName = temp[1],
                CustomerId = temp[2],
                CustomerName = temp[3],
                Amount = temp[4]
            });
        }
    }  

存储后,您可以使用LINQ获取所需的信息。

答案 1 :(得分:0)

您必须使用TextFieldParser Class,它用于将分隔的文本lignes解析为列

using System;
using Microsoft.VisualBasic.FileIO;

class Program
{
static void Main()
{
using (TextFieldParser parser = new    TextFieldParser("C:\\csv.txt"))
{
    parser.Delimiters = new string[] { " " };
    while (true)
    {
    string[] parts = parser.ReadFields();
    if (parts == null)
    {
        break;
    }
    Console.WriteLine("{0} field(s)", parts.Length);
    }
}
}
}

Topic

中有一些有用的示例

答案 2 :(得分:-1)

您可以使用下面的代码来获得您想要的内容

static void Main(String[] args) {

    var allRecords = new List<Record>();
    foreach (var line in File.ReadLines("Budget.txt")) {
        allRecords.Add(new Record(line));
    }
}

public class Record {
    public string ProductId { get; private set; }
    public string ProductName { get; private set; }
    public string CustomerId { get; private set; }
    public string CustomerName { get; private set; }
    public decimal Amount { get; private set; }

    public Record(string line) {
        var items = line.Split();
        ProductId = items[0];
        ProductName = items[1];
        CustomerId = items[2];
        CustomerName = items[3];
        Amount = Convert.ToDecimal(items[4]);
    }

    public override String ToString() {
        return $"ProductId:{ProductId}, ProductName:{ProductName}, CustomerId:{CustomerId}, CustomerName:{CustomerName}, Amount:{Amount}";
    }

}

由于您的问题不是很明确,我认为您的文件格式如以下示例所示

10 Enchiladas 27 John Doe 15.00 
11 HotDogs 27 John Doe 5.00 
12 Burgers 29 Jane Doe 10.00 
.
.
.
and so on