文字列.slice() / substring()
| 対応: | ES1(ECMAScript 1997) |
|---|
文字列の一部を切り出して新しい文字列を返します。元の文字列は変更されません。
構文
// 指定した位置から末尾までを切り出します。 文字列.slice(開始位置) 文字列.slice(開始位置, 終了位置) // 指定した範囲の文字列を切り出します。 文字列.substring(開始位置) 文字列.substring(開始位置, 終了位置)
メソッド一覧
| メソッド | 概要 |
|---|---|
| slice(開始位置) | 開始位置から末尾までを切り出します。負の値を指定すると末尾からの位置として扱われます。 |
| slice(開始位置, 終了位置) | 開始位置から終了位置の手前までを切り出します。終了位置の文字は含まれません。 |
| substring(開始位置) | 開始位置から末尾までを切り出します。負の値は『0』として扱われます。 |
| substring(開始位置, 終了位置) | 開始位置から終了位置の手前までを切り出します。開始位置が終了位置より大きい場合は自動的に入れ替えられます。 |
サンプルコード
sample_stringSlice.js
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』と出力されます。
// ファイル名から拡張子を取得します。
var filename = "divergence_meter.js";
var dotIndex = filename.lastIndexOf(".");
var ext = filename.slice(dotIndex); // 最後の『.』以降を取得します。
console.log(ext); // 『.js』と出力されます。
// URLからドメイン名を切り出します。
var url = "https://future-gadget-lab.jp/experiment/009";
var domain = url.slice(8, url.indexOf("/", 8)); // "https://" の後からパスの手前まで。
console.log(domain); // 『future-gadget-lab.jp』と出力されます。
// 長い文字列を先頭から一定文字数だけ表示します(省略表示)。
var memo = "エル・プサイ・コングルゥ。これは岡部倫太郎が実験完了時に唱えるパスフレーズです。";
var preview = memo.slice(0, 15) + "…";
console.log(preview); // 『エル・プサイ・コングルゥ。こ…』と出力されます。
Script Java Script Scr Script Java Java .js future-gadget-lab.jp エル・プサイ・コングルゥ。こ…
概要
『文字列.slice()』と『文字列.substring()』は文字列の一部を切り出すメソッドです。どちらも開始位置から終了位置の手前までを返し、元の文字列は変更されません。
2つのメソッドの大きな違いは、負の値の扱いと引数の入れ替えです。『文字列.slice()』は負の値を末尾からの位置として扱うため、末尾から文字を切り出す処理に向いています。一方、『文字列.substring()』は負の値を『0』に変換し、開始位置が終了位置より大きい場合は自動的に入れ替えます。
一般的には『文字列.slice()』の方が直感的な動作をするため、多くの場面で推奨されています。配列にも同名の『配列.slice()』メソッドがあり、使い方もほぼ同じです。
対応ブラウザ
デスクトップ
3 以前 ×
3 以前 ×モバイル
Android Browser
37 以降 ○
4 以前 ×
Chrome Android
36 以降 ○
17 以前 ×
Firefox Android
79 以降 ○
3 以前 ×記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。