String.prototype.slice()

slice() メソッドは、元の文字列を変更せず、文字列の一部分を取り出し、それを新しい文字列として返します。

構文

str.slice(beginIndex[, endIndex])

引数

beginIndex
取り出しを開始する位置を示す 0 から始まるインデックスです。負の値の場合、 strLength が文字列の長さとすると strLength + (beginIndex) (例えば beginIndex-3 の場合、 strLength - 3) として扱われます。 beginIndex が文字列の長さ以上である場合、 slice() は空の文字列を返します。
endIndex
省略可能です。その前で取り出しを終える位置を示す 0 から始まるインデックスです。 endIndex を省略した場合、 slice() は文字列の末尾までを取り出します。負の値の場合、 strLength が文字列の長さとすると strLength + endIndex (例えば endIndex-3 の場合、 strLength - 3) として扱われます。

返値

文字列の取り出された一部分を含んだ新しい文字列です。

解説

slice() は 1 つの文字列からテキストを取り出し、新しい文字列を返します。一方の文字列におけるテキストへの変更は、他の文字列に影響を与えません。

slice()endIndex を含まずにテキストを取り出します。str.slice(1, 4) は、2 番目から 4 番目までの文字 (1, 2, 3 番目にインデックスされた文字) を取り出します。

例えば str.slice(2, -1) は、文字列から 3 番目の文字から最後から 2 番目の文字までを取り出します。

slice() を使って新しい文字列をつくる

以下の例は、新しい文字列を生成するために slice() を使っています。

var str1 = 'The morning is upon us.', // the length of str1 is 23.
    str2 = str1.slice(1, 8),
    str3 = str1.slice(4, -2),
    str4 = str1.slice(12),
    str5 = str1.slice(30);
console.log(str2); // OUTPUT: he morn
console.log(str3); // OUTPUT: morning is upon u
console.log(str4); // OUTPUT: is upon us.
console.log(str5); // OUTPUT: ""

負のインデックスで slice() を使う

下記の例は負のインデックスで slice() を使っています。

var str = 'The morning is upon us.';
str.slice(-3);     // returns 'us.'
str.slice(-3, -1); // returns 'us'
str.slice(0, -1);  // returns 'The morning is upon us'

この例は、文字列の末尾から前方に11番目を開始インデックスとし、先頭から後方に16番目を終了インデックスとします。

console.log(str.slice(-11, 16)) // => "is u";

こちらは先頭から後方に11番目を開始インデックスとし、末尾から前方に7番目を終了インデックスとします。

console.log(str.slice(11, -7)) // => "is u";

これらの引数は、末尾から前方に5番目を開始インデックスとし、末尾から前方に1番目を終了インデックスとします。

console.log(str.slice(-5, -1)) // => "n us";

仕様書

仕様書 状態 備考
ECMAScript Latest Draft (ECMA-262)
String.prototype.slice の定義
ドラフト  
ECMAScript 2015 (6th Edition, ECMA-262)
String.prototype.slice の定義
標準  
ECMAScript 5.1 (ECMA-262)
String.prototype.slice の定義
標準  
ECMAScript 3rd Edition (ECMA-262) 標準 初回定義。JavaScript 1.2 で実装。

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
sliceChrome 完全対応 ありEdge 完全対応 12Firefox 完全対応 1IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 ありnodejs 完全対応 あり

凡例

完全対応  
完全対応

関連情報