在Javascript中有一个函数可以比较字符串并返回布尔值吗?我找到了.match函数,但它会返回匹配的字符串。我希望有其他函数可以更简单地比较字符串,因为我想检查一个字符串是否包含这个词并进行相应操作。谢谢。
test()
方法,该方法返回一个布尔值:/a/.test('abcd'); // returns true.
test()
方法执行正则表达式与指定字符串之间的匹配搜索。返回true
或false
。”-- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test - Dem Pilafian如果您需要经常使用此函数,可以使用扩充类型:
String.prototype.isMatch = function(s){
return this.match(s)!==null
}
所以你可以使用:
var myBool = "ali".isMatch("Ali");
一般看法认为,使用类型增强只是因为它可能与其他增强产生冲突而被不建议使用。
根据Javascript Patterns这本书的说法,应该限制其使用。
个人认为只要命名得当,例如:
String.prototype.mycompany_isMatch = function(s){
return this.match(s)!==null
}
这样做会使它看起来不美观,但是安全。
isMatch
是我们添加到JavaScript框架中的内容,而不是内置函数。 - Aliostad有一个.indexOf()
方法,它会返回字符串的位置,如果未找到则返回-1。
myString.indexOf(myWord) > -1
或者,如果您需要一个函数:
function hasWord(myString, myWord) {
return myString.indexOf(myWord) > -1;
}
你可以直接使用比较操作。
if ("dog" == "cat") {
DoSomethingIfItIsTrue();
} else {
DoSomethingIfItIsFalse();
}
我知道这不是你想要的确切答案,但这总是一种有效的方法。
if(var1 == var2){
//do this
}else{
//do that
};
===
测试比==
更可靠(并且具有传递性)。此外,如果需要布尔值,他只需使用(var1 === var2 ? true: false)
。 - ArtoAle实际上,.match()
可以为您完成此操作,因为如果有任何模式匹配字符串,则返回一个数组,否则返回null。
无论如何,如果您只想检查一个字符串是否包含另一个字符串,您更可能使用indexOf()
(如果未找到子字符串,则返回-1)。
第一种解决方案对于您的目的有点过度。
另一方面,如果您想要检查相等性,则可以使用`string1 === string2`
另一位同事使用了indexOf()
方法进行引用。该方法的返回值要么是“-1”,如果在数组中找不到字符串,要么是它找到的位置。
为了使用所需的返回值,您需要先进行检查,例如:
exampleMethod () {
const expression = ['string1', string2] .indexOf (this.exampleObject);
if (expression! = -1) {
return true;
} else return false;
}
includes()
方法:exampleMethode(): boolean {
return ['string1', 'string2'].includes(this.exampleObject);
}
这个方法的返回值可以简单地实现你想要的功能。它会将对象字符串与你想要检查的字符串数组进行比较,并返回一个布尔值。