读取txt文件并对其进行排序

本文关键字:排序 txt 文件 读取 | 更新日期: 2023-09-27 18:20:02

喜欢标题的txt文件,就像这个

等级为0~100

示例:

名称,等级

名称,等级

名称,等级

我必须用等级来分类

解决问题的方法是将它们拆分为数组,然后进行排序吗?

我已经将文件加载到像这个一样的字符串中

char[] spli = { ' ', ',', ''t' };
        string line;
        string[] sline;
        StreamReader file = new StreamReader(textBox1.Text,Encoding.Default);
        line = file.ReadToEnd();
        sline = line.Split(spli);
        foreach (string item in sline)
        {
            listBox1.Items.Add(item);
        }

plz

读取txt文件并对其进行排序

当您从文本文件中读取数据并对其进行解析时,请始终进行验证。您永远不会知道文件中的数据。查看我的代码。

class MyListUser
    {
        public string Name;
        public int  Grades;
    }
private List<MyListUser> ReadUserFile()
        {
            List<MyListUser> lstUser;
            string[] sMyData = File.ReadAllLines("Myfile.txt");
            if (sMyData != null)
            {
                MyListUser oTmp;
                string[] sTmp;
                lstUser = new List<MyListUser>();
                for (int i = 0; i < sMyData.GetLength(0); i++)
                {
                    sTmp = Regex.Split(sMyData[i], ",");
                    //need some validation
                    if (sTmp != null && sTmp.GetLength(0) > 1)
                    {
                        oTmp = new MyListUser();
                        oTmp.Name = sTmp[0];
                        int.TryParse(sTmp[1], out oTmp.Grades );
                        lstUser.Add(oTmp);
                    }
                }
                return lstUser.OrderBy(o => o.Grades).ToList();
            }
            return null;
        }

下面的代码假设文本文件中的grades只是一个数字的一个字符串表示。您可以使用LINQ对其进行排序——首先在,处拆分每一行,然后解析数字的字符串表示,OrderBy it:

 var sorted = File.ReadLines(textBox1.Text)
                  .OrderBy(line => Int32.Parse(line.Split(',')[1]))
                  .ToList();

如果gradesdouble:

var sorted = File.ReadLines(textBox1.Text)
                 .OrderBy(line => Double.Parse(line.Split(',')[1], CultureInfo.InvariantCulture))
                 .ToList();