JavaScript の String.slice と String.substring の違い
-
JavaScript の
文字列
とプロトタイプ
とは何ですか -
JavaScript の
slice
とsubstring
とは -
JavaScript の
slice
とsubstring
の類似点は何ですか -
JavaScript の
slice
とsubstring
の違いは何ですか
このチュートリアル記事では、JavaScript のスライスとサブストリングとは何か、それらを区別するものとそうでないものについて説明します。この記事では、次の質問に対処します。
- 文字列とプロトタイプとは
slice
とsubstring
とは何ですかslice
とsubstring
の類似点は何ですかslice
とsubstring
の違いは何ですか
JavaScript の文字列
とプロトタイプ
とは何ですか
String
オブジェクトについて説明することから始めましょう。文字列オブジェクトは、文字のシーケンスを表すために使用され、テキストとして表す必要のあるデータで一般的に使用されます。
JavaScript は、ヘルパーメソッドやプロパティなどの追加機能を提供する特別なオブジェクトラッパーでプリミティブ値をラップすることにより、プリミティブ値をオブジェクトとして扱います。各プリミティブ型にはオブジェクトラッパーがあります。文字列型は String
と呼ばれます。
prototype
に注目しましょう。prototype
は、すべての JavaScript オブジェクトを含むグローバルプロパティです。これにより、既存のオブジェクトに新しいメソッドとプロパティを追加できます。
function footballClub(name, stadium, founded) {
this.name = name;
this.stadium = stadium;
this.founded = founded;
}
footballClub.prototype.firstTeamPlayers = 11;
const FCB = new footballClub('FC Barcelona', 'Camp Nou', 1899);
console.log(FCB.firstTeamPlayers);
// logs 11
出力:
11
上記の例では、各 footballClub
インスタンスの firstTeamPlayers
プロパティが 11
に設定されています。同様に、prototype
プロパティを使用すると、新しいプロパティとメソッドを文字列に追加できます。
JavaScript の slice
と substring
とは
slice
と substring
は、関数の形式ですべての JavaScript 文字列に存在するプロトタイププロパティです。slice
および substring
関数は、文字列の一部を抽出し、それを新しい文字列として返します。slice
メソッドは元の string
を変更しません。
2つの引数を取ります。最初の引数は抽出を開始する開始インデックスを指定し(インデックスは 0 から始まります)、2 番目の引数は文字列の終了インデックスを指定します(終了インデックスは抽出の一部として含まれません)。
let str = 'Gonna be extracted,Help!';
let slicedStr = str.slice(3, 8);
let substringStr = str.substring(3, 8);
console.log(slicedStr) // logs: na be
console.log(substringStr) // logs: na be
出力:
na be
na be
JavaScript の slice
と substring
の類似点は何ですか
start
が stop
と等しい場合、slice
と substring
の両方が空の文字列を返します。
let str = 'Gonna be extracted,Help!';
let slicedStr = str.slice(8, 8);
let substringStr = str.substring(9, 8);
console.log(slicedStr) // logs:
console.log(substringStr) // logs:
出力:
stop
(2 番目の引数)に slice
と substring
の両方が含まれていない場合、文字列の最後まで文字を抽出します。
let str = "Gonna be extracted,Help!";
let slicedStr = str.slice(3);
let substringStr = str.substring(3);
console.log(slicedStr) // logs: na be extracted,Help!
console.log(substringStr) // logs: na be extracted,Help!
出力:
na be extracted,Help!
na be extracted,Help!
start
または stop
引数のいずれかが文字列の長さより大きい場合、渡された引数の代わりに文字列の長さが使用されます。
let str = 'Gonna be extracted,Help!';
let slicedStr = str.slice(1, 100);
let substringStr = str.substring(1, 100);
console.log(slicedStr) // logs: onna be extracted,Help!
console.log(substringStr) // logs: onna be extracted,Help!
出力:
onna be extracted,Help!
onna be extracted,Help!
JavaScript の slice
と substring
の違いは何ですか
start
引数が slice
の stop
引数よりも大きい場合、空の文字列を返しますが、その場合、substring
はこれら 2つの引数を交換します。
let str = 'Gonna be extracted,Help!';
let slicedStr = str.slice(8, 3);
let substringStr = str.substring(8, 3);
console.log(slicedStr) // logs:
console.log(substringStr) // logs: na be
出力:
na be
start
引数または stop
引数が負または NaN
の場合、その値は substring
では 0
であるかのように扱われますが、slice
では start
引数が負の場合、文字列の終わり。
let str = 'Gonna be extracted,Help!';
let slicedStr = str.slice(-1);
let substringStr = str.substring(-1);
console.log(slicedStr) // logs: !
console.log(substringStr) // logs: Gonna be extracted,Help!
出力:
!
Gonna be extracted,Help!