【JavaScript】substringメソッドを使って文字列の一部を取得する

 

文字列の一部を抜き出すsubstring。

開始位置や終了位置を指定して使います。

最初の文字は0文字目?それとも1文字目?終了位置の数字の文字数目まで抜き出されるのか、それとも1つ左まで?

などなど図で解説していきます。

substring()メソッドの構文

構文は次のとおりです。

strは元の文字列です。
startは抜き出す開始位置、endは終了位置。
最初の文字を0文字目として、1,2,3・・・と、バイト数ではなく文字の位置を数えます。

抜き出した文字列が、戻り値として返ってきます。

substringの使い方いろいろ

引数の指定の仕方によって、結果がいろいろ変わります。

第一引数、スタートのみ指定

2つ目の引数Endは省略可。
1つ目だけ指定した場合は、指定した位置から最後までの文字列が返ってきます。

図で表すとこんな感じ。

第二引数、エンドも指定

2つ目の引数を省略せず指定するときも、いくつかパターンがあります。

スタート<エンドのとき

スタートの位置より後ろを指定する場合です。
個人的には、エンドのほうはこのパターンしか見たことないですが。

この例では、6文字目から12文字目までを抜き出します。

6より13のほうが大きいので、13は抜き出す文字の右端の位置。
この13文字目の1つ左側の位置が抜き出される右端になります。

 

スタートとエンドが逆転したとき

開始位置が13で終了位置が6、これでもちゃんと抜き出せます。

スタート>エンドなので、スタートが右端、エンドが左端となります。
先ほどの例と同じように、右端は指定した数字の位置の文字が含まれません。
1つ左側までです。

エンドがマイナスのとき

負の数を指定した場合、勝手に0とみなされます。

右端の位置は、スタートとエンドが逆転した場合と同じです。

まとめ:substring()メソッドはとても便利

substring()メソッドはとても便利です。

使える言語は、JavaScriptの他にC#やSQLServerなど。
とても便利なので、substringの無い言語では、自作して使われることもよくあります。

 

よく似たメソッドや他の言語によっては、開始位置と、終了位置ではなく抜き出す文字数を指定するものもあります。
「終了位置だと思い込んでいたら、実は文字数だった」とかバグの元になるので、引数が何を表すのか念のため確認してから使うと良いでしょう。