好的,所以这可能是重复的,但是我个人在互联网上或Stackoverflow上都没有看到任何关于此的信息。

我正在开发游戏项目,并且一直在尝试制作基于文本的游戏。

在这个游戏中,我有一个switch语句,供用户输入命令时使用。

到目前为止,我已经有了有关清单和外观的内容(环顾四周环境),但是如何在switch语句中处理特定的内容呢?

例如:

submit = function(input) {
    switch(input) {
        case "LOOK":
            lookaround();
            break;
        case "LOOK AT" + item:
            look();
    }
}


这是我遇到问题的LOOK AT行。我不知道如何使字符串以这种格式工作,除非我为每个单独的项目都指定了大小写,例如“ LOOK AT ORANGE”或“ LOOK AT TREE”。

我希望我能对此进行充分的解释。谁能给我一些建议?

谢谢

编辑

我认为必须注意,用户正在将输入内容输入到输入框中,因此输入值将是一个字符串。

如果有助于查看我编写的代码,请在下面的评论中告诉我。

编辑

感谢您的帮助!

我使用了正则表达式(感谢@ red-devil)和混合切片。现在,它可以完美运行!

最佳答案

如果我理解正确,则希望用户能够输入LOOK AT,然后输入任何项目名称。这里的问题是,您有一个不祥的item变量,可以代表所有内容,并且无法正常工作。
我建议以下两种方式之一:
按照您的示例行:

submit = function (input) {
    switch (true) {
        case input == "LOOK":
            alert("Look")
            break;
        case input.startsWith("LOOK AT"):
            alert(input)
            break;
    }
}

if (typeof String.prototype.startsWith != 'function') {
    String.prototype.startsWith = function (str) {
        return this.slice(0, str.length) == str;
    };
}


其次,这是我建议的方法,您实现了一种将任何输入解析为命令和参数的方法。一种方法是在每个空格字符处分割输入,然后第一个值为命令,其余为参数。这将要求您使用一个单词命令,例如LookAt而不是LOOK AT
所以像这样:

function submit(input) {
    var parts = input.split(" ");
    var cmd = parts[0];
    var args = parts.slice(1);

    switch (cmd) {
        case "Look":
            lookAround();
            break;

        case "LookAt":
            lookAt(args[0]);
            break;
    }
}

10-05 20:18