我有一个代码,可以从raw.githubusercontent.com获取一行文本
WebRequest webRequest = WebRequest.Create(getargs[1]);
using (WebResponse response = webRequest.GetResponse())
using (Stream content = response.GetResponseStream())
using (StreamReader reader = new StreamReader(content))
{
string strCntent = reader.ReadToEnd();
string[] plgnCntn;
plgnCntn = strCntent.Split('(', ')', ':', ',');
if (plgnCntn[0] != "validplgn")
{
newln("Plgn couldn't be installed. Not validated.");
}
else
{
string dmy = plgnCntn[1];
dummy = dmy.Split('-');
install_id = Convert.ToInt32(dummy[1]);
dummy = plgnCntn[2].Split('-');
install_plgn_nme = dummy[1];
dummy = plgnCntn[3].Split('-');
install_cmmd = dummy[1];
plgnbyID.Add(install_id, install_plgn_nme);
plgncmds.Add(install_plgn_nme, install_cmmd);
inverseplgncmds.Add(install_cmmd, install_plgn_nme);
plgnparse.Add(install_plgn_nme, plgnCntn[4]);
}
}
一切似乎都很好,程序获取数据,我用
进行测试" validplgn(id-0001,plgn_nme-plgn,cmmd-plgninfo):{ln-此插件已从创建者的GitHub下载; hlp-hlp}"
获取数据时,会将其拆分为
" validplgn"," id-0001"," plgn_nme-plgn"," cmmd-plgninfo"," { ln-此插件已从创作者的GitHub下载; hlp-hlp}"
应该测试[0] ==" validplgn",将所有数据保存在词典中。保存所有这些数据后,程序将继续运行并在循环中检查命令。基本上检测我放在文本框中的内容,检查IF语句并给出答案,当文本框中的内容与任何命令都不匹配时,它写道:
"命令未被识别。请输入hlp"。
我认为问题来自于此代码:
else if (plgncmds.ContainsValue(inp))
{
string plgnnme;
string toparse;
string[] splitparse = {};
int arglength;
inverseplgncmds.TryGetValue(inp, out plgnnme);
plgnparse.TryGetValue(plgnnme, out toparse);
splitparse = toparse.Split(';');
arglength = splitparse.Length;
foreach (string statement in splitparse)
{
string[] dmmy = statement.Split('-');
...
在检查程序循环的最后,测试客户端的未知命令是否与以下任何已下载命令匹配:
否则if(plgncmds.ContainsValue(inp))
所以,当我输入" plgninfo"时,这是执行此代码的文本:
{ln-此插件已从创作者的GitHub下载; hlp-hlp} 之前已经宣布,当cmd-plgninfo"被拆分并保存了plgninfo部分。现在,这段代码使用命令(plgninfo)获取字典上的键,但它不会显示任何内容。这就是问题所在。它应该打印"这个插件已经从创作者的GitHub"并显示命令的程序帮助" hlp"。但是没有,我在VS 2013中有ReSharper 9并且任何问题都被抛出,没有任何反应。
我希望这是一种解决方法。 感谢。