【发布时间】:2020-02-17 20:01:45
【问题描述】:
private boolean relatedCommand(String input) {
// make sure the split afterwards has at least size one
if (input.matches(" .*")) {
return false;
}
final String command = input.split(" ".toString())[0];
return COMMAND_PACKAGE
.keySet()
.stream()
.map(Pattern::toString)
.anyMatch(patternText -> patternText.startsWith(command + " "));
}
public Command getCommand(final String input) throws InvalidInputException {
if (relatedCommand(input)) {
Terminal.printError("test");
throw new InvalidInputException("invalid arguments");
} else {
throw new InvalidInputException("unknown command");
}
...
}
我无法向用户提供更具体的错误消息。例如,我有命令add track <argument1> 和add switch <argument1>。如果用户只是键入“添加”,他不应该收到错误消息“无效参数”。相反,它应该是“无效命令:使用添加轨道或添加开关)。由于relatedCommand() 是一个布尔值。我如何有效地实现这个?
【问题讨论】:
-
另外,如果你只是在寻找解析用户输入命令的方法,看看这个问题:stackoverflow.com/questions/12595270/…