我似乎无法找到解决方案,所以我只会问它。
我有一个接收字符串的方法,解释它并给出答案。如果出现问题,它会给出一个默认情况。
private string ProcessCommand(string str)
{
string result = "";
switch (str)
{
case "hello":
result = "Hello!";
break;
default:
result = "Sorry, I do not recognize your command";
break;
}
return result;
}
现在我想提高一点。例如:我有一个命令getSurname +参数,因此输入为/getSurname Adam
,我希望输出为Sandler。如何让我的代码通过我传入的参数/参数识别正确的命令?
答案 0 :(得分:1)
尝试在同一参数中包含命令和值,并由特定字符(例如=
)分隔。
然后你的参数字符串就像/getSurname=Adam
。
如果你需要将多个值传递给方法,你需要提出一个分离它们的方案(可能很好的html编码并像查询字符串一样传递它们。)
关于如何拆分分隔符的一些示例代码(假设str
可以包含由空格分隔的多个参数):
string paramDelimiter = ' '
string[] params = str.Split(paramDelimiter);
string valDelimiter = '=';
foreach (string paramString in params) {
if (paramString.IsNullOrEmpty()) continue;
string[] paramAndVal = paramString.Split(valDelimiter);
string param = paramAndVal[0];
string val = paramAndVal[1];
// logic goes here to switch through params and handle them
// based on the value that was passed
}
然后,您的函数代码将负责将每个参数解析为命令和值(或命令和名称/值对)并根据需要使用它们。
答案 1 :(得分:1)
我建议使用Regular Expression或string.split()将命令字符串解析为命令和参数数组。
演示:http://jsfiddle.net/Vrm7X/1/
代码:
$("#btnRun").on("click", function() {
var commandString = $("#cmd").val(),
commandArguments = commandString.split(" "),
command = commandArguments.shift();
alert("Your command is: " + command);
for (arg in commandArguments) {
alert("Argument " + arg + ": " + commandArguments[arg])
}
});
对于扩展的命令语法,您应该使用正则表达式来解析
之类的内容/surname -Name John -Age 33
到
Command: surname
Argument 'Name': John
Argument 'Age': 33