如何在javascript中操作字符串?

时间:2013-11-19 21:30:18

标签: javascript string function

我是javascript的新手,需要一些帮助!我想制作一个神奇的8球脚本,为某些问题提供特定答案。到目前为止,我有这样的话,如果我问一个具体的问题,它会给我一个答案,但我想改变它,以便根据问题是否使用“谁”或“什么”给我一个具体的答案'或者如果一个问题使用'a''d'和'b'以及类似的东西。有谁知道怎么做,你能帮助我吗?我完全陷入困境,不知道怎么回事。谢谢你的帮助!

    <script>


        function eightBall() {
            var answer = document.getElementById("answerBox").value;
            var images = ['answerYes.png', 'answerNo.png', 'answerAskLater.png', 'answerNotL.png', 'answerMaybe.png'];

            if (answer.search(/Will I be rich?/) > -1) {
                var askLater = '../images/answerAskLater.png'
                document.getElementById('eightTemplate').src = askLater;

            } else if (answer.search(/Will I be happy?/) > -1) {
                var no = '../images/answerNo.png'
                document.getElementById('eightTemplate').src = no;
            } else if (answer.search(/Will I live to be 90 years old?/) > -1) {
                var yes = '../images/answerYes.png'
                document.getElementById('eightTemplate').src = yes;
            } else if (answer.search(/Will I be married later in life?/) > -1) {
                var notLikely = '../images/answerNotL.png'
                document.getElementById('eightTemplate').src = notLikely;
            } else if (answer.search(/Can I have a puppy?/) > -1) {
                var maybe = '../images/answerMaybe.png'
                document.getElementById('eightTemplate').src = maybe;
            }

        }


    </script>

4 个答案:

答案 0 :(得分:0)

如果您想查看问题是否包含某个字词,那么我建议使用javascript的Regular Expressions。这些表达式可用于测试或提取某些单词甚至句子结构。例如:

var questionPattern = new RegExp('.+\?$');

//returns true if answer ends with question mark
var isQuestion = questionPattern.test(answer); 

你实际上已经在使用正则表达式而不知道它。传递给搜索功能的所有内容都是简单的正则表达式。例如:

/.+\?$/

是我在上面的代码中声明的相同正则表达式的简写方式。您还可以构造正则表达式,以查看字符串是否以单词what开头:

/^(what)/i

有关正则表达式的更多信息,请查看here。希望它有所帮助!

答案 1 :(得分:0)

我建议将所有案例放在一个表中,而不是大量类似的if/then/else语句,这样你就可以循环它了。

function eightBall() {
    var possibilities = [
        { match: /Will I be rich\?/,
          answer: 'AskLater' },
        { match: /Will I be happy\?/,
          answer: 'No' },
        ...
    ];
    var answer = document.getElementById('answerBox').value;
    for (var i = 0; i < possibilities.length; i++) {
        if (possibilities[i].test(answer)) {
            document.getElementById('eightTemplate').src = '../images/answer' + possibilities[i].answer + '.png';
            return;
        }
    }
    // Display a default answer here
}

您可以将whowhat,字母或其他任何内容的正则表达式添加到possibilities表中。

答案 2 :(得分:0)

还有一种更简单的方法可以实现这一目标:str.toLowerCase().contains("who");但RegExp是您进行复杂检查的最佳选择。

答案 3 :(得分:0)

斜杠之间的东西不必匹配整个字符串。如果字符串在任何地方包含小写的“b”,则以下内容将显示answerYes.png。例如,当字符串为“你喜欢蓝莓吗?”时它会匹配。或“abcd”。

else if (answer.search(/b/) > -1) {
    var yes = '../images/answerYes.png'
    document.getElementById('eightTemplate').src = yes;
}

为清楚起见,将answer变量重命名为question可能是个好主意,因为看起来您正在使用它来保存问题的值。

这种做法可能对你正在做的事情很好。只要您想要做的只是在问题中找到单词,字母或短语,它就会起作用。如果你想变得更复杂,并且匹配一般模式而不是特定的文本字符串,你可能想要了解其他人建议的正则表达式(RegExp)。