固定 我把代码放在这里给其他需要帮助解决自己问题的人(假设他们遇到了问题。
FIXED CODE THAT WORKS
public static bool CommandExists(String value)
{
string[] commands = File.ReadAllText("commands.txt")
.Split()
.Where(x => x.StartsWith(value))
.Distinct()
.ToArray();
return commands.Contains(value);
}
public static string CommandParse(String value, string nick)
{
IEnumerable<string> lines;
lines = File.ReadLines("commands.txt");
IEnumerable<string> command = lines
.Where(d => d.StartsWith(value,
StringComparison.CurrentCultureIgnoreCase));
foreach (string line in command) {
string vals = line
.Replace("@nick", nick)
.Replace("@upnick", nick.ToUpper())
.Replace(value + " ", "");
return vals;
}
return null;
}
所以我已经尝试了几个小时,我环顾四周,找不到任何与我想做的事情有关的事情。
我有一个文本文件我读的名为&#34; commands.txt&#34;我试图解析文本。这是内容:
!help Hello, current commands are: !help, !ver
!ver Testing this
现在,如果我拉
string x1 = File.ReadAllLines("commands.txt").ToString();
string[] x2 = x1.Split(' ');
string x3 = x2[0];
Console.WriteLine(x3);
我得到的数据超出了数组的范围&#39;。我不知道我做错了什么。我也试图使用静态布尔&#39;如果命令存在则调用,到目前为止我得到了
public static bool CommandExists(String value)
{
if (File.ReadAllLines("commands.txt").Contains(value.ToString())) {
return true;
}
else
{
return false;
}
}
并且它也不起作用。
导致该异常的原因是什么?
编辑:CommandParse()
public static string CommandParse(string value, string nick)
{
string[] commands = File.ReadAllText("commands.txt")
.Split()
.Where(x => x.StartsWith("!"+value.ToLower()))
.Distinct()
.ToArray();
string cmd = commands[1]
.Replace("@nick", nick)
.Replace("@nickup", nick.ToUpper());
return cmd;
}
现在我知道返回True,如何让它不返回true,但返回命令本身
答案 0 :(得分:4)
ReadAllLines
返回一个字符串数组,你正在使用ToString
而不是获取行,你得到的字符串数组的类型名称不包含任何while-space所以{ {1}}不会更改任何内容。如果您想阅读所有文字,请使用Split(' ')
方法。
ReadAllText
似乎您的所有命令都以string x1 = File.ReadAllText("commands.txt");
开头,因此您可以将所有命令放入这样的数组中:
!
然后你的方法将如下所示:
string[] commands = File.ReadAllText("commands.txt")
.Split()
.Where(x => x.StartsWith("!"))
.Distinct()
.ToArray();
如果您想排除,请在public static bool CommandExists(String value)
{
string[] commands = File.ReadAllText("commands.txt")
.Split()
.Where(x => x.StartsWith("!"))
.Distinct()
.ToArray();
return commands.Contains(value);
}
之后添加!
。