【发布时间】:2020-06-20 20:43:26
【问题描述】:
我目前正在努力使用获取输入命令的流。
看起来像这样
final Command command = commands.stream()
.filter(cmd -> (input.startsWith(cmd.getName()) && (input.length() == cmd.getName().length()
|| input.charAt(cmd.getName().length()) == ' ')))
.findAny()
.orElseThrow(() -> new InvalidInputException("unknown command"));
例如,我的 ExitCommand 的 getName() 如下所示:
@Override
public String getName() {
return "exit";
}
流工作得很好,除了它也接受像“exit”这样的输入。所以退出加一个空格。这不应该发生,我不知道如何解决这个问题。它相当复杂,因为有一个、两个和三个字长的命令。 (例如“退出”、“删除机车车辆”、“列出火车”)。
如果有人可以帮助我,我将非常感激。
【问题讨论】:
-
我不知道有任何命令 shell 会因为有尾随空格而拒绝命令。这样的政策会让大多数用户感到惊讶。正确的行为还取决于您之后如何处理单词,例如,当有两个空格时会发生什么?
标签: java command-line command java-stream command-line-arguments