JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列内の部分文字列を検索する2つの方法【indexOf()とincludes()】

JavaScriptでは、ある文字列の中に特定の部分文字列が含まれているかどうかを確認する方法が2つあります。1つはindexOf()メソッドを使う方法、もう1つはES6(ECMAScript 2015)で導入されたincludes()メソッドを使う方法です。ここでは、それぞれの特徴と使い方を詳しく解説します。

indexOf()メソッド

構文

indexOf(str);

このメソッドは、指定した部分文字列が文字列内で最初に出現するインデックス(位置)を返します。見つかった場合はその位置(0以上の数値)、見つからなかった場合は-1が返ります。そのため、戻り値が-1以外であれば部分文字列が存在することを意味し、比較演算子を使ってtrue/falseとして判定できます。このメソッドは大文字と小文字を区別する点に注意が必要です。

例

<html>
<body>
<script>
   var company = "Tutorix";
   document.write(company.indexOf('Tutor') !== -1);
   document.write("</br>");
   document.write(company.indexOf('tutor') !== -1);
</script>
</body>
</html>

出力

true
false

上記の例では、「Tutorix」という文字列に対して「Tutor」(先頭が大文字)を検索すると一致するためtrueが返りますが、「tutor」は大文字と小文字が異なるため一致せず、falseが返ります。


includes()メソッド

構文

includes(str);

indexOf()メソッドとは異なり、このメソッドは指定した部分文字列が文字列内に存在するかどうかを直接判定し、boolean値(true / false)を返します。存在すればtrueが、存在しなければfalseが出力されます。このメソッドも大文字と小文字を区別するため、存在を確認したい場合は正確な文字列を指定する必要があります。

さらに、includes()メソッドは第2引数に検索を開始する位置(インデックス)を指定できるため、文字列の途中から検索したい場合にも便利です。

例

<html>
<body>
<script>
   var company = "tutorialspoint";
   document.write(company.includes('Tutor'));
   document.write("</br>");
   document.write(company.includes('point'));
</script>
</body>
</html>

出力

false
true

上記の例では、「tutorialspoint」という文字列に対して「Tutor」を検索しても大文字と小文字が異なるためfalseが返りますが、「point」は完全に一致するためtrueが返ります。


使い分けのポイント

単に部分文字列の有無だけを確認したい場合は、boolean値を直接返すincludes()の方がコードがシンプルで読みやすくなります。一方、部分文字列の位置(インデックス)が必要な場面ではindexOf()が適しています。また、大文字小文字を区別せずに検索したい場合は、いずれのメソッドでも対象の文字列をtoLowerCase()などで統一してから比較するとよいでしょう。

  1. ChromeでJavaScriptの関数定義を見つける方法|開発者ツールの検索機能を使いこなそう

    Google ChromeでWebサイトのソースコードを解析していると、「このJavaScript関数はどこで定義されているのだろう?」と悩むことがあります。特に大規模なプロジェクトや、複数の外部スクリプトが読み込まれているページでは、目的の関数定義を手作業で探すのは非常に手間がかかります。 Chrome DevToolsの検索機能を使えば一瞬で見つかる 実は、Chromeに標準搭載されているデベロッパーツール(Developer Tools)には、読み込まれたすべてのファイルを横断的に検索できる強力な機能があります。以下の手順に従えば、JavaScriptの関数定義も簡単に見つけられます。

  2. Pythonで階段の登り方の総数を求めるプログラムを作成する方法

    プログラミングの典型的な問題として、「階段の登り方」問題があります。この記事では、Pythonを使ってこの問題を動的計画法(DP)で解く方法を詳しく解説します。 問題の概要 n段の階段があるとします。一度に1段または2段ずつ上ることができる場合、この階段を上るユニークな登り方の総数を返す関数を定義する必要があります。 ポイントは、段を踏む順序が異なれば別の登り方としてカウントするという点です。また、答えが非常に大きな数になる可能性があるため、結果を 10^9 + 7 で割った余りを返します。 例えば、入力が n = 5 の場合、出力は 8 となります。これは、次の8通りのユニークな登り方が存