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!