从文本文档中读取某些值

时间:2018-12-11 17:43:23

标签: c#

这是我的代码,我试图弄清楚如何从文本文档中读取int值。例如。文本文档:1; Name; Surname; 5,我正在尝试仅读取最后一个数字,但不知道该怎么做。我需要找出一个较短的解决方案,以及一个一般的解决方案。会感激您给我的所有帮助,编程建议以及所有常规内容

    struct redualnica
{
    public int id;
    public string ime;
    public string priimek;
    public int ocena;
    public void vrednost(int d, string z, string m, int p)
    {
        id = d;
        ime = z;
        priimek = m;
        ocena = p;
    }
}
class Program
{
    static void Main(string[] args)
    {
        string datoteka = "ocene.txt";
        redualnica[] mojaredualnica = new redualnica[25];
        int meni = 0;
        do
        {
            Console.WriteLine("1. - Naloži podatke");
            Console.WriteLine("2. - Izpiše vse podatke");
            Console.WriteLine("3. - Izpišite določene ocene");
            Console.WriteLine("4. - Izhod");
            meni = Convert.ToInt32(Console.ReadLine());
            switch (meni)
            {
                case 1:
                    Nalozi(mojaredualnica, datoteka);
                    break;
                case 2:
                    Izpis(mojaredualnica);
                    break;
                case 3:
                    Izpis(doloceneocene);
                    break;
                default:
                    meni = 0;
                    break;
            }
        } while (meni != 0);
    }
    static void Nalozi(redualnica[] mG, string dat)
    {
        StreamReader sr = File.OpenText(dat);
        string vrstica = sr.ReadLine();
        string[] tposameznihpodatkov;
        int i = 0;
        while (vrstica != null)
        {
            tposameznihpodatkov = vrstica.Split(';');
            mG[i].id = Convert.ToInt32(tposameznihpodatkov[0]);
            mG[i].ime = tposameznihpodatkov[1];
            mG[i].priimek = tposameznihpodatkov[2];
            mG[i].ocena = Convert.ToInt32(tposameznihpodatkov[3]);
            vrstica = sr.ReadLine();
            i++;
        }
        sr.Close();
    }
    static void Izpis(redualnica[] mG)
    {
        Console.WriteLine("----------------------");
        foreach (var x in mG)
        {
            Console.WriteLine(x.id + " " + x.ime + " " + x.priimek + ", " + x.ocena);
        }
        Console.WriteLine("----------------------");
    }
    static void izbira(int a)
    {
        a = int.Parse(Console.ReadLine());
    }
    static void dodajdijaka(int b)
    {
        using (StreamWriter sr = File.AppendAllText(path))
        {
            string st = "";
            sr.WriteLine(st = sr.ReadLine());
        }
    }
}

我输入了一个id;名字;姓氏;号码 采用这种格式,它只能读写最后一个数字

1 个答案:

答案 0 :(得分:0)

我正在查看您的代码,但不清楚!我想提一些建议,也许这可以解决您的代码问题。

我编辑Nalozi方法。我注意到,条件会引发异常。

static void Nalozi(redualnica[] mG, string dat)
        {
            StreamReader sr = File.OpenText(dat);

            string[] tposameznihpodatkov;
            int i = 0;
            while (sr.EndOfStream && i <= mG.Length)
            {
                string vrstica = sr.ReadLine();
                tposameznihpodatkov = vrstica.Split(';');
                mG[i].id = Convert.ToInt32(tposameznihpodatkov[0]);
                mG[i].ime = tposameznihpodatkov[1];
                mG[i].priimek = tposameznihpodatkov[2];
                mG[i].ocena = Convert.ToInt32(tposameznihpodatkov[3]);
                vrstica = sr.ReadLine();
                i++;
            }
            sr.Close();
        }