如何在javascript中操作字符串?

如何在javascript中操作字符串?,javascript,string,function,Javascript,String,Function,我是javascript新手,需要一些帮助!我想制作一个神奇的8球脚本,为某些问题提供一个具体的答案。到目前为止,如果我问一个特定的问题,它会给我一个答案,但我想修改它,根据问题是否使用“谁”或“什么”,或者如果一个问题使用“a”、“d”和“b”之类的词,它会给我一个特定的答案。有人知道怎么做吗?你能帮我吗?我完全被卡住了,不知道该怎么办。谢谢你的帮助 <script> function eightBall() { var answ

我是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>

函数eightBall(){
var answer=document.getElementById(“answerBox”).value;
var images=['answerYes.png','answerNo.png','answerAskLater.png','answerNotL.png','answerMaybe.png'];
如果(回答.搜索(/我会富有吗?/)>-1){
var askLater='../images/answerAskLater.png'
document.getElementById('eightTemplate')。src=askLater;
}else if(answer.search(/我会高兴吗?/)>-1){
var no='../images/answerNo.png'
document.getElementById('eightTemplate')。src=no;
}否则如果(回答.搜索(/我能活到90岁吗?/)>-1){
var yes='../images/answerYes.png'
document.getElementById('eightTemplate')。src=yes;
}else if(回答.搜索(/我以后会结婚吗?/)>-1){
var notalue='../images/answerNotL.png'
document.getElementById('eightTemplate')。src=不太可能;
}else if(回答.搜索(/我能养只小狗吗?/)>-1){
var maybe='../images/answerMaybe.png'
document.getElementById('eightTemplate').src=maybe;
}
}

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

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

//returns true if answer ends with question mark
var isQuestion = questionPattern.test(answer); 
实际上,您已经在不知不觉中使用了正则表达式。传递给搜索函数的所有内容都是一个简单的正则表达式。例如:

/.+\?$/
是我在上述代码中声明的同一正则表达式的简写方式。您还可以构造正则表达式,以查看字符串是否以单词what开头:

/^(what)/i

有关正则表达式的详细信息,请选中。希望有帮助

我建议不要使用大量类似的
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
}
函数eightBall(){
var可能性=[
{匹配:/我会富有吗\?/,
回答:'阿斯克莱特'},
{匹配:/我会快乐吗\?/,
回答:'不'},
...
];
var answer=document.getElementById('answerBox')。值;
对于(变量i=0;i<0.length;i++){
如果(可能性[i].测试(答案)){
document.getElementById('eightTemplate').src='../images/answer'+可能性[i].answer+'.png';
返回;
}
}
//在此处显示默认答案
}

您可以向
可能性
表中添加匹配
who
what
、字母或任何其他内容的正则表达式。

还有一种更简单的方法来实现这一点:
str.toLowerCase().contains(“who”)但对于复杂的检查,您可以选择RegExp。

斜杠之间的内容不必匹配整个字符串。下面将显示
answerYes.png
如果字符串的任何位置包含小写字母“b”。例如,当字符串为“您喜欢蓝莓吗?”或“abcd”时,它将匹配

为清楚起见,最好将
答案
变量重命名为
问题
,因为它看起来像是用来保存问题的值


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

也许通读a会给您一些想法?您可能正在寻找正则表达式。不会很漂亮的。
else if (answer.search(/b/) > -1) {
    var yes = '../images/answerYes.png'
    document.getElementById('eightTemplate').src = yes;
}