Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. 文字列.slice() / substring()

文字列.slice() / substring()

文字列の一部を切り出して新しい文字列を返します。元の文字列は変更されません。

構文
// 指定した位置から末尾までを切り出します。
文字列.slice(開始位置)
文字列.slice(開始位置, 終了位置)

// 指定した範囲の文字列を切り出します。
文字列.substring(開始位置)
文字列.substring(開始位置, 終了位置)
メソッド一覧
メソッド概要
slice(開始位置)開始位置から末尾までを切り出します。負の値を指定すると末尾からの位置として扱われます。
slice(開始位置, 終了位置)開始位置から終了位置の手前までを切り出します。終了位置の文字は含まれません。
substring(開始位置)開始位置から末尾までを切り出します。負の値は『0』として扱われます。
substring(開始位置, 終了位置)開始位置から終了位置の手前までを切り出します。開始位置が終了位置より大きい場合は自動的に入れ替えられます。
サンプルコード
var str = "JavaScript";

// slice で切り出します。
console.log(str.slice(4));     // 『Script』と出力されます。
console.log(str.slice(0, 4));  // 『Java』と出力されます。
console.log(str.slice(-6));    // 末尾から6文字を切り出し『Script』と出力されます。
console.log(str.slice(-6, -3)); // 『Scr』と出力されます。

// substring で切り出します。
console.log(str.substring(4));     // 『Script』と出力されます。
console.log(str.substring(0, 4));  // 『Java』と出力されます。

// slice と substring の違い
console.log(str.slice(4, 0));      // 空文字『』が返されます。
console.log(str.substring(4, 0));  // 引数が入れ替わり『Java』と出力されます。
実行結果

上記のコードを実行すると、コンソールには以下が出力されます。

"Script"    // 位置4から末尾まで
"Java"      // 位置0から位置4の手前まで
"Script"    // 末尾から6文字
"Scr"       // 末尾6文字目から末尾3文字目の手前まで
"Script"    // substring も同じ結果
"Java"      // substring も同じ結果
""          // slice は開始 > 終了で空文字を返す
"Java"      // substring は引数を自動的に入れ替える
概要

『文字列.slice()』と『文字列.substring()』は文字列の一部を切り出すメソッドです。どちらも開始位置から終了位置の手前までを返し、元の文字列は変更されません。

2つのメソッドの大きな違いは、負の値の扱いと引数の入れ替えです。『文字列.slice()』は負の値を末尾からの位置として扱うため、末尾から文字を切り出す処理に向いています。一方、『文字列.substring()』は負の値を『0』に変換し、開始位置が終了位置より大きい場合は自動的に入れ替えます。

一般的には『文字列.slice()』の方が直感的な動作をするため、多くの場面で推奨されています。配列にも同名の『配列.slice()』メソッドがあり、使い方もほぼ同じです。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。