区分一字,二字和三字命令

问题描述 投票:0回答:1

现在,我正在使用此方法来检查用户是否刚刚输入了带有错误参数的命令:

    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 + " ");
    }

((COMMAND_PACKAGE包含所有已注册的命令)

现在,这对于单字命令非常有效。例如get <argument1> <argument2>remove <argument1>

但是,我目前正在一个同时具有一个单词和两个单词命令的项目中工作。这是一系列实际上不适用于此方法的命令:add track <argument1>add switch <argument1>step <argument>。在这种情况下,对于命令add track <argument1>,“ track”被视为一个参数,但它实际上属于命令本身。

如果使用仅键入“添加”,则错误消息为“无效参数”。相反,错误消息应该更精确,并告诉他该命令不存在(因为只有“添加曲目”或“添加开关”)。

有人知道如何区分一个单词和两个单词的命令吗?用户还可以使用由三个单词组成的命令delete rolling stock <argument>

总而言之,因此有必要区分一个,两个和三个单词的命令。

java split stream command
1个回答
0
投票
方法String.split("\s+")将您在空白处的输入分割为一个数组。您可以查询该数组的长度,然后知道您的输入包含多少个单词。
© www.soinside.com 2019 - 2024. All rights reserved.