Google Apps Scriptの文字列を検索する方法(indexOf,lastIndexOf,searchメソッド)

2020年5月16日

Google Apps Scriptで文字列の中身を検索する方法を紹介したいと思います。

indexOf、lastIndexOf、searchの3つの文字列検索の方法と、それぞれの違いについて解説します。

 

GASで文字列の検索は主に3種類の方法

Google Apps Script(GAS)で文字列の検索を行う場合は、主に以下の3種類メソッドで行います。

  1. indexOfメソッド
  2. lastIndexOfメソッド
  3. searchメソッド

GASで文字列検索するサンプルコードでは、よくindexOfメソッドが用いられていますが、それぞれメソッドの役割が少しずつ異なります。

GASのindexOf,lastIndexOf,searchメソッドの構文

3つのメソッドの構文に加え、例文としてのサンプルコードを紹介したいと思います。

String.indexOf(word [,from])

※fromの引数は省略可能。省略で最初の文字から検索する

→文字列から検索文字列wordをfrom文字目から最後の文字まで検索し、一致した位置を返す

String.lastIndexOf(word [,from])

※fromの引数は省略可能。省略で最後の文字から検索する

→文字列から検索文字列wordをfrom文字目から最初の文字まで検索し、一致した位置を返す

String.search(word)

※word引数は文字列だけでなく、正規表現も指定可能

→文字列から検索文字列wordを最初の文字から最後の文字まで検索し、一致した位置を返す

なお、検索文字列に一致するものがない場合は-1が出力されます。

GAS文字列を検索するサンプルコード

Google Apps Scriptで文字列を検索するサンプルコードをそれぞれ紹介したいと思います。

Google Apps Script(GAS)の文字列を検索するindexOf,lastIndexOf,searchメソッドのサンプルコード

function myFunction() {
let testString = "りんご、みかん、ぶどう、いちご、もも";
Logger.log(testString.indexOf("みかん"));
Logger.log(testString.lastIndexOf("みかん"));
Logger.log(testString.search("みかん"));
}

いずれも検索でヒットした位置を返すため、文字列を前から数えた4がログ出力されます。

indexOfとlastIndexOfの違いは検索の方向

indexOfとlastIndexOfの大きな違いは検索する方向です。

indexOfメソッドの場合は、文字列の前から後ろに向かって検索する前方検索です。

それに対し、lastIndexOfメソッドは文字列の後ろから前に向かって検索する後方検索です。

検索対象の文字列に初めてヒットした位置を返却するため、検索にヒットする場所が複数ある場合、indexOfとlastIndexOfの結果に違いが生じます。

function myFunction() {
let testString = "りんご、みかん、ぶどう、いちご、もも";
Logger.log(testString.indexOf("ご"));
Logger.log(testString.lastIndexOf("ご"));
}

この場合、indexOfはりんごの「ご」をヒットしますが、lastIndexOfはいちごの「ご」にヒットし、2と14と返却する結果が異なります。

searchは正規表現の検索も可能

GASの文字列のもうひとつのメソッド、searchでは文字列だけでなく正規表現による検索もできます。

その代わり、指定できる引数は検索ワードだけなので、検索をスタートさせる位置を指定することはできません。

indexOfとlastIndexOfとsearchメソッドの使い分け

Google Apps Scriptで文字列の検索を行う場合、indexOfがよく用いられます。

そのため、ネット上でもサンプルコードが豊富なので、indexOfメソッドを使うのがオススメです。

ただ、検索に一致するワードが複数あり、後方検索のよい場合はlastIndexOfメソッドを使います。

通常の文字列表現だけでなく、正規表現による検索を行いたい場合はsearchメソッドといった使い分けができます。

まとめ・終わりに

今回、Google Apps Script(GAS)の文字列で、特定の文字を検索する方法を紹介しました。

GASで文字列検索を行う場合には、indexOf、lastIndexOf、searchメソッドの3種類が用意されています。

前方検索や後方検索といった検索の仕組みや正規表現を使うかどうかで使い分けることができます。

文字列検索の要件に応じ、indexOf、lastIndexOf、searchの3つを使い分けましょう。

※Google App Scriptでの文字列の各種処理・操作方法は以下の記事でまとめています。

GoogleApps Script(GAS)文字列の処理・操作方法まとめ(置換/変換/抽出/分割/連結)