Close icon
2018月06日17日

JavaScript の文字列検索と使い分け

JavaScript で文字列を検索する場合、いくつかの方法が用意されている。

  • indexOf
  • match
  • test
  • search

とりあえず違いを表にしてみた。他にも exec とかあった気がするけど、とりあえず。

単純な文字列 正規表現 戻り値 クラス
indexOf × Integer (マッチしたインデックス) String
match Integer (マッチしたインデックス) String
test Bool RegExp
search Integer (マッチしたインデックス) String

使い分けとベンチマーク

まずはそれぞれの検索スピードのベンチマークを資料として。

JavaScriptで文字列の有無判定方法の速度ベンチマーク(indexOf、match、test)

ちなみに上記の表で「単純検索」で△が多いのは、正規表現を使って単純検索するとかならできるから・・・みたいな感じです。

次にそれぞれの使い分け方をざっくり書いておく。

indexOf

単純に検索したい文字列が対象の文字列に含まれるか、だけを検索したい場合は indexOf でほとんどの場合はいい。また、速度も安定している。ただし正規表現を用いることはできないので、厳密な文字列のチェックには向かない。

match / search

似ているのでまとめてしまったけど、match と search は正規表現も使えるし、出現する位置が取れたりとできることがいっぱいある。ただし遅いので、単純に正規表現で一致するかどうかを調べたいだけなら次に書く test がいい。

test

これだけ今回出てきた検索の中で String のメソッドじゃなくて RegExp のメソッド。なので他と違って書き方が以下みたいになる。

  /^ABC$/.test(Sring);

indexOf と違って正規表現が使える上に早い。ただし戻り値が Bool なので一致する or 一致しない、しかわからない。出現位置が知りたければ indexOf を使うこともできるけど、indexOf は前述した通り正規表現が使えないので厳密なチェックはできない。



アトトックラボとは

株式会社アトトックメンバー が技術の話、デザインの話、キャラクターの話、ときどき脱線してガジェットの話やライフハックの話など好きなことを書いています。


連載記事


最近の記事


タグ