GASで文字列を切り出す関数(slice, substring, substr)について徹底解説

今回の記事では、文字列データから必要な情報だけを切り出す時に使う関数について解説していきます。

目次

GASで文字列を切り出す方法は3つ

GASで文字列を切り出す場合には、以下の三つの関数を使います。

  • slice
  • substring
  • substr

sliceとsubstringは基本的な使い方をする場合にはよく似ていて切り出す位置を指定して使う関数です。
substrは指定の位置から○文字分切り出すという関数になります。

切り出す文字数が決まっていない場合にはsliceかsubstring
切り出す文字数が決まっている場合にはsubstrを使うとよいです。

sliceの使い方

sliceは切り出したい文字列の位置を指定することによって切り出すことができます。
文字列.slice(開始位置, 終了位置)
終了位置は省略することもできます。

実際にサンプルをみながら確認していきましょう。
8basetechという文字列を切り出してみます。

function myFunction() {
  var text = "8basetech"
  var sliceText = text.slice(2, 6)
  Logger.log(sliceText)
}
log> aset

上の例では2文字目より後から6文字目までが切り出されます。
例の通りではありますが、開始位置は含まない点に注意です。

頭の特定文字列は必要なくて、それ以降の文字列を切り出したいという場合には、
終了位置を入れないことによって最後まで切り出すことができます。

function myFunction() {
  var text = "8basetech"
  var sliceText = text.slice(5)
  Logger.log(sliceText)
}
log > tech

5文字目より後の文字列を全て切り出すことができました。

後ろについた文字列を除外したい時にも使うことができます
その場合には終了位置にマイナスの値を渡してあげます。

function myFunction() {
  var text = "8basetech"
  var sliceText = text.slice(0, -4)
  Logger.log(sliceText)
}
log > 8base

開始位置には0を指定して、終了位置に-4を入れることによって後ろの4文字を除外した状態で切り出すことができます。

上記のように使うことによって任意の位置で文字列を切り出すことができます。
完全に決まり切った文字列を除外したい時には数値指定でいいかと思いますが、実際に使う時にはある文字列が入ってたらなどと変化するでしょう。

そんな時にはindexOfという文字列がどの位置にあるかというのを教えてくれる関数と組み合わせることによってより柔軟に切り出すことができます。

substringの使い方

substringはsliceと基本的な使い方は一緒です。
文字列.substring(開始位置, 終了位置)
終了位置は省略も可能です。

function myFunction() {
  var text = "8basetech"
  var substringText1 = text.substring(4, 8)
  var substringText2 = text.substring(3)
  Logger.log(substringText1)
  Logger.log(substringText2)
}
log > etec
log > setech

sliceと同じような結果となります。
それでは、sliceと何が違うのかというと、マイナスの値の扱い方が異なります
sliceではマイナスは後ろから数えた位置となっていましたが、
substringでは後ろから数えた位置というのは使うことができません。

実際にサンプルコードをみてみましょう。

function myFunction() {
  var text = "8basetech"
  var substringText1 = text.substring(4, -2)
  var substringText2 = text.substring(-5, 6)
  Logger.log(substringText1)
  Logger.log(substringText2)
}
log > 8bas
log > 8baset

sliceの時とは全然異なっているのが分かるかと思います。

後ろから数えた特定文字列を除外したい時にはsubstringは使いずらい
とだけ覚えておけばいいのですが、一応解説もしておきます。

substringText1側から何が起こっているか解説すると、まずsubstringでは開始位置よりも終了位置が少ない場合には勝手に入れ替えるということをしてきます。
4>ー2なので、substring(-2, 4)となります。

そして、マイナスの値はゼロ変換されるので、substring(0, 4)となり、結果として8basという頭から4文字切り出したものになります。

subtringText2側はsubstringText1で一部説明したマイナスの値がゼロ変換されるという動きのため先頭からの切り出しとなっています。

この時点で厄介なので、あんま変な使い方するのやめておこうとだけ覚えてもらえれば十分です。

substrの使い方

substrはsliceやsubstringとは異なったやり方で文字列を切り出します。
sliceやsubstringではどこからどこまで切り出すか?という2つの位置を指定してあげる必要がありましたが、substrでは指定の位置から○文字分切り出すという使い方になります。

文字列.substr(開始位置, 長さ)
長さのところに何も入れない場合には開始位置より後の文字列を返します。

function myFunction() {
  var text = "8basetech"
  var substrText1 = text.substr(4, 2)
  var substrText2 = text.substr(5)
  Logger.log(substrText1)
  Logger.log(substrText2)
}
log > et 
log > tech

サンプルコードの通り、substrText1では4文字目より後の2文字を切り出しています。
省略した場合にはsliceやsubstringと同じ挙動となります。

substrではマイナスの値を使うことができないので、開始位置から前の文字列を撮ってくることはできません。

文字の位置を特定する方法

これまでに文字列を切り出す関数について解説いたしました。
まずは使い方を理解していただくために固定の数値による説明でしたが、実施は開始位置はそれぞれパターンがあるかと思います。

指定の文字列から始まる後の文字列を切り出したいといった場合にはindexOfという関数を組み合わせながら使います。
実際この使い方が多いかと思いますので、こちらの記事も参考にしてみてください。

https://blog.8basetech.com/google-apps-script/gas-indexof/

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメント一覧 (1件)

目次