gpt4 book ai didi

java - 区分一字、二字和三字命令

转载 作者:行者123 更新时间:2023-12-01 18:24:30 24 4
gpt4 key购买 nike

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

    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”被视为一个参数,但它确实属于命令本身。

如果仅输入“add”,则错误消息为“无效参数”。相反,错误消息应该更准确,并告诉他该命令不存在(因为只有“添加轨道”或“添加开关”)。

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

总而言之,因此有必要区分一字、二字和三字的命令。

最佳答案

说实话,解决这个问题最简单、最有效的方法是创建包含两个或三个单词的命令列表,然后简单地在单独的方法中执行匹配,这样,如果您命中某个关键字,该列表就是该命令的一部分对于较长的命令,您检查下一个单词,看看它是否是您期望的命令的一部分。

根据命令的具体规范等,您也许可以使用 HashMap<String, HashMap<String, String>>来表示命令。这样,您可以简单地执行一些操作,例如将前缀存储为键,然后将后缀存储为值。

关于java - 区分一字、二字和三字命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60250206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com