我正在为聊天服务器制作一个小机器人,在机器人中有一个小游戏系统,用户可以使用硬币进行赌博。我正在从我的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;
}
答案 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;文件开头的指令使用该代码。