JavaScriptである文字列に別な文字列(substring)が含まれているかどうかをチェックする方法って?

このエントリーをはてなブックマークに追加

質問:

String.contains()メソッドだと思ったんだけど、ちょっと違うみたい。これをチェックするいい方法ってあるかな?



回答1:

考えられる方法としてはこんな感じ:

  1. indexOf
    var string = "foo",
    substring = "oo";
    string.indexOf(substring) !== -1;

String.prototype.indexOfは、ある文字列の中にある他の文字列の位置を返す。見つからなければ -1を返す。

  1. (ES6) includes - この回答、またはこの回答を参照
var string = "foo",
substring = "oo";
string.includes(substring);
  1. search - この回答参照
var string = "foo",
expr = /oo/;
string.search(expr);
  1. lodash includes - この回答参照
var string = "foo",
substring = "oo";
_.includes(string, substring);
  1. RegExp - この回答参照
var string = "foo",
expr = /oo/; // no quotes here
expr.test(string);
  1. Match - この回答参照
var string = "foo",
expr = /oo/;
string.match(expr);

パフォーマンステスト(http://jsben.ch/#/RVYk7)の結果によればでは、indexOfが最速みたいなので、スピードが重要なポイントになる場合は、最良の選択かも。

By Fabien Ménager | 回答日時: Nov 24 ‘09 at 13:05



回答2:

こうやればStringに containsメソッドを簡単に追加できるよ:

function(it){このthis.indexOfを返します! }; }

String.prototype.contains = function(it) { return this.indexOf(it) != -1; };

_Note:これを使うのはいろいろ議論の別れるところだけど、自分自身の判断で使用して。

これ以外だと:

if (typeof String.prototype.contains === 'undefined') { String.prototype.contains = function(it) { return this.indexOf(it) != -1; }; }

By Avi Flax | 回答日時: Dec 30 ‘09 at 4:23



回答3:

JavaScriptが大文字と小文字を区別するのに気をつけて。きみのコードだと、

indexof()

でも実際には

indexOf()

これを修正し、うまくいくか確認してみて:

if (test.indexOf("title") !=-1) {
alert(elm);
foundLinks++;
}

By Victor | 回答日時: Nov 24 ‘09 at 14:17



Source: How to check whether a string contains a substring in JavaScript?

共有 コメント