将用户及其值与texfile

时间:2016-11-02 20:12:02

标签: c# loops

我正在为聊天服务器制作一个小机器人,在机器人中有一个小游戏系统,用户可以使用硬币进行赌博。我正在从我的PC上运行bot并使用文本文件来存储我的数据。我使用':'char将我的用户与他们的硬币分开。我有一个方法,无论你是想要一个用户数组还是一组硬币,都会接受一个参数。我认为这将使以后更容易找到用户附带的值。但我只是得到空阵列。

我很确定它可以用更加流畅的方式完成,但我对编程很新,特别是c#。我已经尝试过调试,但它只是在没有进一步的情况下退出循环,它也没有抛出任何异常。

这是我的方法。

 private string[] separateUsersFromCoins(string option)
    {
        string[] users = { };
        string[] coins = { };
        string[] temp;
        string[] result = { "I fucked up somewhere." };
        char[] userSeparater = { ':' };
        string rawData = File.ReadAllText(@"C:\Users\Derk\Documents\BottingDiscord\CringeBot\CringeBotConsole\Coin.txt");
        temp = rawData.Split(userSeparater);
        for (int i = 0; i <= temp.Length; i += 2)
        {
            users[i] = temp[i];
        }
        for (int i = 1; i <= temp.Length; i += 2)
        {
            coins[i] = temp[i];
        }
        if (option == "users" )
        {
            result = users;
        }
        else if(option == "coins")
        {
            result = coins;
        }
        else
        {
           return result;
        }
        return result;
    }

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码代替您的方法:

    int count = 0;
    string[] users = { };
    string[] coins = { };
    string[] result = { "I fucked up somewhere." };
    char[] userSeparater = { ':' };
    string path = @"FILE_PATH_HERE";
    try 
    {
        if (File.Exists(path)) 
        using (StreamReader sr = new StreamReader(path)) 
        {
            while (sr.Peek() >= 0) 
            {
                string[] temp = sr.ReadLine().split(userSeparater);
                users[count] = temp[0];
                coins[count] = temp[1]
            }
        }
    } 
    catch (Exception e) 
    {
        Console.WriteLine("The process failed: {0}", e.ToString());
        return result;
    }
    if (option == "users" )
    {
        return users;
    }
    else if(option == "coins")
    {
        return coins;
    }
    else
    {
       return result;
    }

您需要使用&#34;使用System.IO;&#34;文件开头的指令使用该代码。