8

javascript中是否有比较字符串并返回布尔值的函数?我找到了 .match 但它返回匹配的字符串。我希望还有别的东西,这样我在比较字符串时就可以使用更少的代码。因为我想检查一个字符串是否有这个词,否则继续。

谢谢

4

8 回答 8

28

您可以使用test()返回布尔值的 RegEx 方法:

/a/.test('abcd'); // returns true.
于 2012-05-22T15:33:40.890 回答
12

您可以使用 type augmentation,特别是如果您需要经常使用此功能:

String.prototype.isMatch = function(s){
   return this.match(s)!==null 
}

所以你可以使用:

var myBool = "ali".isMatch("Ali");

一般的观点是不鼓励使用类型扩充,只是因为它可能与其他扩充发生冲突。

根据Javascript Patterns book,它的使用必须受到限制。

我个人认为是可以的,只要你使用一个好的命名比如:

String.prototype.mycompany_isMatch = function(s){
   return this.match(s)!==null 
}

这将使它丑陋安全

于 2012-05-22T15:33:11.610 回答
5

.indexOf()哪个将返回找到的字符串的位置,如果没有找到则返回-1

于 2012-05-22T15:30:17.083 回答
1
myString.indexOf(myWord) > -1

或者,如果你想要一个函数:

function hasWord(myString, myWord) {
  return myString.indexOf(myWord) > -1;
}
于 2012-05-22T15:32:42.383 回答
0

您可以只使用比较。

if ("dog" == "cat") {
  DoSomethingIfItIsTrue();
} else {
    DoSomethingIfItIsFalse();
}
于 2012-05-22T15:31:27.067 回答
0

我知道这不是您正在寻找的确切答案,但这始终是一种有效的方法。

if(var1 == var2){
  //do this
}else{
  //do that
};
于 2012-05-22T15:32:11.693 回答
0

实际上,.match()它可以为您解决问题,因为它返回一个模式匹配字符串数组(如果有),否则返回 null。

无论如何,如果您只想检查一个字符串是否包含另一个您更有可能使用的字符串 indexOf()(如果没有找到子字符串,它将返回 -1)。

对于您的目的,第一个解决方案有点矫枉过正。

如果在另一端你想检查是否相等,你可以使用`string1 === string2`

于 2012-05-22T15:34:27.610 回答
0

如果还有人有疑问...

它被另一位同事使用该indexOf()方法引用。这个方法的返回要么是“-1”,如果它在数组中没有找到字符串,或者它找到的 case 的位置。

要将其与所需的回报一起使用,您必须先执行检查,例如:

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);
}

此方法的返回将以简单的方式执行您想要的操作。将对象字符串与要检查的字符串数组进行比较,并返回一个布尔值。

于 2019-01-04T19:39:01.230 回答