是否有一个函数会忽略javascript中的大写字母?

时间:2015-03-30 22:02:16

标签: javascript if-statement case-insensitive capitalization

我有一个聊天机器人,只有当我用与代码中的相同方式编写它们才能回答问题Ex:如果我写了标签“Hello”,如果我在聊天机器人“你好”中说它就不会回答。我必须像代码中的大写字母一样写它。是否有一个函数会忽略它并回答它,即使我把它写成“HeLlO”?

if (message.indexOf("Bye")>=0 || message.indexOf("bye")>=0 ||  message.indexOf("Goodbye")>=0  ||  message.indexOf("Goodbye")>=0  ){
    send_message("You're welcome.");
}

4 个答案:

答案 0 :(得分:3)

您可以在不区分大小写的模式下使用正则表达式:

if (/bye/i.test(message)) {
    send_message("You're welcome.");
}

此外,无需同时测试byegoodbye - 如果它包含goodbye,那么它显然也包含bye

但是如果你想测试不同的消息,那么正则表达式也很容易:

if (/bye|adios|arrivederci/i.test(message))

答案 1 :(得分:0)

尝试message.toLowerCase()将大写字母转换为小写字母。

答案 2 :(得分:0)

您可以尝试使用toLowerCase方法来解决问题。

示例:

msg = "HeLlo"
msg.toLowerCase() // "hello"
msg.toLowerCase().indexOf("hello")>=0 // true

或者您可以使用String原型来创建不区分大小写的contains方法:

String.prototype.ci_contains = function(str){
    return this.toLowerCase().contains(str.toLowerCase())
}

使用示例:

msg = "ByE"
msg.ci_contains("bye") // True
msg.ci_contains("Bye") // True

答案 3 :(得分:0)

我建议使用:

  • .toLowerCase()

这有助于比较没有区分大小写的情况,即:

  function compairWithNoCase(valueCompair1,valueCompair2)
    {
        return valueCompair1.toLowerCase().match(
                                         valueCompair2.toLowerCase()
                                                )==valueCompair1.toLowerCase()
    }
/*
compairWithNoCase('hElLo','HeLlO');
true
compairWithNoCase('BYE','HELLO');
false
compairWithNoCase('ByE','bYe');
true
*/