【GAS】文字列の切り出し・分割方法(slice / substring / substr / split)
Google Apps Script(GAS)では、スプレッドシートと連携して条件に該当するセルのみに処理を実行したり、スクレイピング中に要素を抽出するなど、文字列の切り出しや分割を行うことが必要なシーンが多くあります。
この記事では、GASにおいて文字列の中から特定の一部を切り出して抽出する方法をご紹介します。配列における分割方法は下記の記事をご覧ください。
GASで文字列の切り出し・分割・抽出を行う方法4選
Google Apps Script(GAS)で文字列の中から一部を切り出して抽出したい場合、主に下記の4つの方法が使えます。
- sliceメソッド:開始位置と終了位置を指定して文字列の切り出しを行う
- substringメソッド:開始位置と終了位置を指定して文字列の切り出しを行う
- substrメソッド:開始位置と文字数を指定して文字列の切り出しを行う
- splitメソッド:分割のキーとなる文字列(正規表現)を指定して文字列の切り出しを行う
slice、substring、substr、splitの各構文と使い方、それぞれの違いについて解説していきます。
sliceメソッド
String.slice(start [,end])
- start(必須):切り出し開始位置を指定する数字(先頭を指定したければ「0」が引数となる)
※負の値を引数とした場合は開始位置が末尾からカウントされる - end(任意):切り出し終了位置(省略可、省略した場合は最後まで切り出し)
- 戻り値:切り出した文字列
//開始位置のみを指定
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSlice = str.slice(6);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSlice); //風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
//開始位置と終了位置を指定
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSlice = str.slice(6,12);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSlice); // 風ニモマケズ
substringメソッド
String.substring(start [,end])
- start(必須):切り出し開始位置を指定する数字
※負の値を引数とした場合は開始位置が先頭になる(「0」を引数とした時と同様の挙動になる) - end(任意):切り出し終了位置(省略可、省略した場合は最後まで切り出し)
- 戻り値:切り出した文字列
//開始位置のみを指定
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSubstring = str.substring(6);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSubstring); // 風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
//開始位置と終了位置を指定
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSubstring = str.substring(6, 12);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSubstring); // 風ニモマケズ
基本的な構文ではsliceメソッドとsubstringメソッドは全く同じ戻り値を返しましたが、引数に負の値を与えた場合に両者の挙動が変わります。
例えば開始位置の引数に負の値を与えるとき、sliceメソッドは末尾からカウントした開始位置になるのに対して、substingメソッドは「0」を与えたときと同様に先頭を開始位置とします。
//sliceメソッドの開始位置の引数が負の値だった場合
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSlice = str.slice(-6);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSlice); //サニモマケヌ
//substringメソッドの開始位置の引数が負の値だった場合
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSubstring = str.substring(-6);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSubstring); // 雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
substrメソッド
String.substr(start [,len])
- start(必須):切り出し開始位置
- len(任意):切り出す文字数を指定する数値(省略可、省略した場合は最後まで切り出し)
- 戻り値:切り出した文字列
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSubstr = str.substr(6,15);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSubstr);//風ニモマケズ雪ニモ夏ノ暑サニモ
エディター上でsubstrメソッドを記述するとわかりますが、@deprecated — A legacy feature for browser compatibility というアラートが表示されます。「ブラウザの互換性によって」レガシーな機能となっているとのことで詳細は不明ですが、GASのアップデート過程で非推奨になったようです。
今のところ問題なく実行できますが、今後クローズされる可能性も加味してsliceメソッドかsubstringメソッドを使ってプログラムを組んだ方が安全でしょう。
splitメソッド
String.split(regex [, num])
- regex(必須、正規表現):切り出すキーとなる文字列の検索条件(文字列指定でも可)
- num:分割する個数(先頭からカウント)
- 戻り値:キーで分割した文字列の配列
//「ニモ」をキーとして分割
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSplit = str.split(/ニモ/);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSplit); //[ '雨', 'マケズ風', 'マケズ雪', '夏ノ暑サ', 'マケヌ' ]
let str = "雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ";
let strSplit = str.split(/ニモ/,3);
console.log(str); //雨ニモマケズ風ニモマケズ雪ニモ夏ノ暑サニモマケヌ
console.log(strSplit); //[ '雨', 'マケズ風', 'マケズ雪' ]
まとめ
GASにおける文字列の分割、切り出し方法について解説しました。
- 文字列を切り出す方法は、sliceメソッド / substringメソッド / substrメソッド / splitメソッドの4種類が主に使われる
- sliceメソッドとsubstringメソッドは切り出し位置と終了位置、substrメソッドは切り出し位置と切り出す文字数、splitメソッドは分割キーとなる文字列(正規表現)を指定できる
- sliceメソッドとsubstringメソッドは負の値を引数に与えたときの挙動が異なる
- substrメソッドは現在では非推奨