【问题标题】:Reading Text from text file ant separating to variables从文本文件中读取文本 ant 分离到变量
【发布时间】:2020-08-31 12:59:35
【问题描述】:

我正在尝试从杂乱的文本中为不同的变量设置值。

主菜 姓名;组别;价格;税金;编号;身份证;;全名;描述;

更大的修饰符 姓名;团体;价格;税金;号码;身份证;/一些/附加/资料

较小的修饰符 姓名;;价格;TAX;号码;身份证;/一些/附加/东西

Text 

Omlet;Second Dishes;40,0000;;00027;326ef70c-8d29-4c63-94ce-0580f26f84ab;Omlet with chicken and mushroom sauce;;;;;
Onions;Vegetables;4,1000;21;00021;fe5bab77-72cf-474e-acbc-1562c2f6aa37;0/1/1/1/6;;;;
Tomatoes;Vegetables;4,2000;21;00022;180fa908-9428-444e-a1df-5b74a40def64;0/1/1/1/7;;;;
Day Soup;Soup;123,4560;9;10108;19674f89-a44a-423d-ae79-0fc020be8d72;;;;;;
Roast pork with sauce;Second Dishes;0,0500;21;1167;a929bf86-2b89-4af6-baf9-f37317e0d75f;;;;;;
Cucumbers;;0,5500;21;222;8e370b64-b1f8-4665-95ae-88327d877394;-/-/1/0/3;;;;;
Tomatoes with garlic;Vegetables;0,1100;21;00024;52d08882-41c2-4dc3-8c4b-998109b6aedc;-/-/1/0/3;;;;;
Salt;;0,3300;21;00025;39332fab-99e0-4663-a59a-fff0deab958d;-/-/1/0/3;;;;;

我已经创建了一个类

    class Food
    {
        public string Name;
        public string Group;
        public string Price;
        public string TaxPercent;
        public string Number;
        public string ID;
        public string Type;
        public string FullName;
        public string Description;
}

有人能解释一下我想如何将部分分成较小的修饰符和较大的修饰符吗?我应该创建新类还是可以使用一个? IF 语句应该是怎样的?

到目前为止我尝试了什么

 private void button1_Click(object sender, EventArgs e)
        {
            List<Food> List= new List<Food>();
            using (StreamReader sr = new StreamReader(@"TEST.txt"))
            {
                while (!sr.EndOfStream)
                
                {
                    string str;
                    string[] stringArray;
                    str = sr.ReadLine();

                    strArray = str.Split(';');
                    Food Dish = new Food();
                    Dish.Name = stringArray[0];
                    Dish.Group = stringArray[1];
                    Dish.Price = stringArray[2];
                    Dish.TaxPercent = stringArray[3];

                    List.Add(Dish);

                    textBox1.Text =displayMembers(List); 
    


} 
string displayMembers(List<Food> vegetables)
            {
                foreach (Food s in vegetables)
                {
                    return s.ToString();
                }
                return null;
          

 Out put 

TESTREADER.FOOD  //TESTREADER IS A FOLDER WHERE TEST FILE IS.

【问题讨论】:

  • 您能描述一下具体的问题吗?它根本不起作用吗?你有错误吗?还有什么?
  • “因为这段代码没有将信息分类到变量中。”你能添加一些输入/结果对的例子,但你没有得到预期的结果吗?跨度>
  • 首先,我需要有人告诉我我是否走对了路。它没有给我任何错误,只是根本不起作用,不会将文本排序为变量。似乎它只是跳过了文本。我不确定,如果您很好地理解了这些拆分语句,请看一下并告诉我您在此处看到的所有问题,并给我一些建议或我不知道的事情:(
  • @Fildor 完全更新了问题。
  • 1. displayMembers 只返回列表中第一个元素的字符串表示形式。 2.你不应该在事件调度线程(又名“主线程”,又名“GUI线程”,又名......)中进行I/O操作。但这可能不是这里的问题。

标签: c# list variables streamreader


【解决方案1】:

你可以这样做:

public List<Food> getFoods()
    {
        List<Food> foods = new List<Food>();
        using (var fileReader = new StreamReader(@"file.txt"))
        {
            var line = fileReader.ReadLine();
            while (line != null)
            {
                string[] data = s.Split(';');
                line = fileReader.ReadLine();
                Food food = new Food
                {
                    Name = data[0];
                    Group = data[1];
                    (...)
            }

            line = fileReader.ReadLine();
        }

        return foods;
    }

【讨论】:

  • 它有什么帮助?
猜你喜欢
  • 2014-03-29
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多