JavaScript - substring()メソッド

JavaScriptのStringオブジェクトのsubstring()メソッドは、 文字列から指定された位置にある部分文字列を取得します。

substring()の構文


文字列.substring(開始インデックス[, 終了インデックス)

「開始インデックス」~「終了インデックス - 1」文字目までを取得します。

例えば、substring(0, 2)とした場合は0番目から1番目までの文字列を取得します。

開始インデックス

文字列取得を開始する0を先頭とするインデックスです。 負数を指定した場合は「0」として扱います。

終了インデックス

省略可能。文字列取得を終了する0を先頭とするインデックスです。 省略した場合は文字列の最後までを取得します。 負数を指定した場合は「0」として扱います。

substring()のサンプルコード

通常の使用方法


let str = '0123456789';

console.log(str.substring(0, 2)); // 01

console.log(str.substring(1, 4)); // 123

開始インデックスに0を指定した場合は、先頭(0番目)から文字列を取得します。

終了インデックス - 1」番目までの部分文字列を取得します。

substring(0, 2)は、先頭(0番目)から1番目までの部分文字列となります。

終了インデックスを省略


let str = '0123456789';

console.log(str.substring(1)); // 123456789

console.log(str.substring(8)); // 89

終了インデックスを省略した場合は、文字列の最後までを取得します。

「str.substring(1)」の場合は、1番目の文字から最後までの文字列となります。

開始インデックスに負数を指定


let str = '0123456789';

console.log(str.substring(-5, 8)); // 01234567

console.log(str.substring(-3)); // 0123456789

開始インデックスに負数を指定した場合は、「0」として扱います。

「substring(-5, 8)」は「substring(0, 8)」となります。

2番目の「substring(-3)」は「substring(0)」となります。 ですから、先頭から最後までの文字列を取得します。

開始インデックス > 終了インデックス

あまりないケースでしょうが、開始インデックスの方が終了インデックスよりも大きい場合です。


let str = '0123456789';

console.log(str.substring(4, 1)); // 123

「開始インデックス > 終了インデックス」の場合は、 開始インデックスと終了インデックスの値が入れ替わります。

つまり「substring(4, 1)」は「substring(1, 4)」となります。 ですから1番目から3番目までの部分文字列を取得します。

終了インデックスに負数を指定


let str = '0123456789';

console.log(str.substring(4, -2)); // 0123

終了インデックスに負数を指定した場合は、「0」として扱います。

「substring(4, -2)」は「substring(4, 0)」となり、さらに先程説明したように、 「開始インデックス > 終了インデックス」の場合は値が入れ替わります。

そこで最終的にはsubstring(0, 4)となります。

開始インデックス = 終了インデックス


let str = '0123456789';

console.log('★' + str.substring(4, 4) + '★'); // ★★

開始インデックス = 終了インデックスの場合は、空文字を返します。

console.log()の結果は、空文字であることがわかるように★で囲っています。