我有一个聊天机器人,只有当我用与代码中的相同方式编写它们才能回答问题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.");
}
答案 0 :(得分:3)
您可以在不区分大小写的模式下使用正则表达式:
if (/bye/i.test(message)) {
send_message("You're welcome.");
}
此外,无需同时测试bye
和goodbye
- 如果它包含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)
我建议使用:
这有助于比较没有区分大小写的情况,即:
function compairWithNoCase(valueCompair1,valueCompair2)
{
return valueCompair1.toLowerCase().match(
valueCompair2.toLowerCase()
)==valueCompair1.toLowerCase()
}
/*
compairWithNoCase('hElLo','HeLlO');
true
compairWithNoCase('BYE','HELLO');
false
compairWithNoCase('ByE','bYe');
true
*/