違いは何ですか
alert("abc".substr(0,2));
そして
alert("abc".substring(0,2));
どちらも "ab"を出力するようです。
違いは2番目の引数にあります。 substring
の2番目の引数は、停止するインデックスです(ただし、インクルードは含みません)。ただし、substr
の2番目の引数は、返す最大長です。
リンク?
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substr
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring
Yatima2975の回答で示唆されているように、さらに違いがあります。
substr()
は、負の開始位置を文字列の末尾からのオフセットとして受け入れます。 substring()
は違います。
_ mdn _ から:
Startが負の場合、substr()はそれを文字列の末尾からの文字インデックスとして使用します。
機能的な違いをまとめると:
begin-offsetが0
以上の場合はsubstring(begin-offset, end-offset-exclusive)
begin-offsetが負の値の場合もあるsubstr(begin-offset, length)
私が最近遭遇したもう1つの問題は、IE 8では、"abcd".substr(-1)
が誤って"abcd"
を返すのに対し、Firefox 3.6は本来どおり"d"
を返すことです。 slice
は両方で正しく動作します。
このトピックに関する詳細は ここ をご覧ください。
主な違いはそれです
substr()を使用すると、返す最大長を指定できます。
substring()はインデックスを指定することを可能にし、2番目の引数は包括的ではありません
Substr()とsubstring()の間には、等しい引数や負の引数の扱いなど、いくつかの追加の微妙な点があります。 substring()とslice()も似ていますが、常に同じというわけではありません。
//*** length vs indices:
"string".substring(2,4); // "ri" (start, end) indices / second value is NOT inclusive
"string".substr(2,4); // "ring" (start, length) length is the maximum length to return
"string".slice(2,4); // "ri" (start, end) indices / second value is NOT inclusive
//*** watch out for substring swap:
"string".substring(3,2); // "r" (swaps the larger and the smaller number)
"string".substr(3,2); // "in"
"string".slice(3,2); // "" (just returns "")
//*** negative second argument:
"string".substring(2,-4); // "st" (converts negative numbers to 0, then swaps first and second position)
"string".substr(2,-4); // ""
"string".slice(2,-4); // ""
//*** negative first argument:
"string".substring(-3); // "string"
"string".substr(-3); // "ing" (read from end of string)
"string".slice(-3); // "ing"
違いは2番目のパラメータです。 2番目のパラメータは、どちらの数値も2つの異なる値を期待しています。
部分文字列を使用する場合、2番目のパラメータは含まない最初のインデックスです。
var s = "string";
s.substring(1, 3); // would return 'tr'
var s = "another example";
s.substring(3, 7); // would return 'ther'
Substrを使用する場合、2番目のパラメータは部分文字列に含める文字数です。
var s = "string";
s.substr(1, 3); // would return 'tri'
var s = "another example";
s.substr(3, 7); // would return 'ther ex'
スライスvsサブストリングvsサブストリングvs []メソッド
これらの各JavaScriptメソッドにはパフォーマンス上の利点があります。それに応じてこれらの機能を使用してください。
substring(): 「start」と「end」の2つのパラメータがあります。
endパラメータが指定されていない場合は、開始位置から文字列の末尾までのすべての文字が抽出されます。
var str = "Substring Example";
var result = str.substring(0, 10);
alert(result);
Output : Substring
開始パラメータの値が終了パラメータの値より大きい場合、このメソッドは2つの引数を交換します。これは、開始が終了として使用され、終了が開始として使用されることを意味します。
var str = "Substring Example";
var result = str.substring(10, 0);
alert(result);
Output : Substring
substr() :2つのパラメータ "start"と "count"があります。
startパラメータは必須であり、抽出を開始する位置を指定します。
countパラメータはオプションで、抽出する文字数を指定します。
var str = "Substr Example";
var result = str.substr(0, 10);
alert(result);
Output : Substr Exa
countパラメータが指定されていない場合は、開始位置から文字列の末尾までのすべての文字が抽出されます。 countが0または負の場合、空の文字列が返されます。
var str = "Substr Example";
var result = str.substr(11);
alert(result);
Output : ple
大きな違いは、 substr()
is 廃止予定のメソッド であり、まだ使用できますが、将来的には完全に削除される予定であるため、慎重に使用する必要があります。あなたはあなたのコードからそれらの使用を取り除くために働くべきです。そして substring()
メソッドは成功し、前者を指定しました。
substring(startIndex、endIndex(含まれていない))
substr(startIndex、文字数)
const string = 'JavaScript';
console.log('substring(1,2)', string.substring(1,2)); // a
console.log('substr(1,2)', string.substr(1,2)); // av