JavaScriptの部分文字列と部分文字列
sliceとspliceの配列メソッドの違いを覚えるのが難しいのと同様に、substringメソッドとsubstrJavaScript文字列メソッドの違いも覚えにくい場合があります。 これを支援するためのクイックリファレンスがあります。
TL; DR: 部分文字列 takes a starting index and an end index while substr takes a starting index and a length of characters.
String.prototype.substring
substring()メソッドは、すべてスペルアウトされており、文字列のサブセットを含む新しい文字列を返します。 1つの引数を渡すと、指定されたインデックス(包括的)から始まり、文字列の終わりまで文字列が取得されます。
const myStr = 'Alligator';
const myNewStr = myStr.substring(2);
console.log(myNewStr); // ligator
2つの引数が渡されると、開始インデックスから終了インデックスまでの文字列のサブセットが取得されます(排他的):
const myStr = 'Alligator';
const myNewStr = myStr.substring(0, 3);
console.log(myNewStr); // All
String.prototype.substr
substr()メソッドは非常に似ていますが、2番目の引数は終了インデックスではなく、文字数です。
ここでは、開始インデックス2からの3文字の文字列が必要です。
const myStr = 'Alligator';
const myNewStr = myStr.substr(2, 3);
console.log(myNewStr); // lig
負の開始インデックス
さらに、 substr の最初の引数は負の整数にすることができます。この場合、返される文字列の先頭は、メソッドが使用される文字列の末尾からカウントされます。
const myStr = 'Alligator';
const myNewStr = myStr.substr(-2);
console.log(myNewStr); // or
引数が1つだけの場合も同じ結果
最初の引数のみが使用され、正の整数の場合、substringとsubstrの両方が同じ値を返します。
const myStr = 'Alligator';
const myNewStrViaSubstring = myStr.substring(3);
const myNewStrViaSubstr = myStr.substr(3);
console.log(myNewStrViaSubstring); // igator
console.log(myNewStrViaSubstr); // igator