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()の結果は、空文字であることがわかるように★で囲っています。