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

本文关键字:拆分 字符串 文件 文本 读取 | 更新日期: 2023-09-27 18:15:27

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

PRODUCTID PRODUCTNAME CUSTOMERID CUSTOMERNAME AMOUNT.

文本文件包含11行,每一行我必须存储每个eg。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);
            }
        }     
编辑:创建一个类来保存数据

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

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

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来获取你想要的信息。

您必须与TextFieldParser类一起工作,它用于解析分隔的文本字符作为列

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);
    }
}
}
}

这个主题有一个有用的例子

你可以使用下面的代码来获得你想要的

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