8

文字列を比較してブール値を返すJavaScriptの関数はありますか? .match が見つかりましたが、一致した文字列が返されます。文字列を比較する際のコードが少なくなるように、何か他のものがあることを望んでいました。文字列にこの単語が含まれているかどうかを確認し、そうでない場合は続行したかったので。

ありがとう

4

8 に答える 8

28

test()ブール値を返すRegEx メソッドを使用できます。

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

特にこの関数を頻繁に使用する必要がある場合は、型の拡張を使用できます。

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 に答える