web-dev-qa-db-ja.com

Substrとsubstringの違いは何ですか?

違いは何ですか

alert("abc".substr(0,2));

そして

alert("abc".substring(0,2));

どちらも "ab"を出力するようです。

778

違いは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

860
Delan Azabani

substr_ mdn _ )は、パラメーターを(from, length)として受け取ります。
substring_ mdn _ )は、パラメーターを(from, to)として受け取ります。

alert("abc".substr(1,2)); // returns "bc"
alert("abc".substring(1,2)); // returns "b"

あなたはsubstringがインデックスをとることを覚えていることができます、さらに別の文字列抽出方法、 スライス

0から始めるときはどちらの方法を使ってもかまいません。

285
Colin Hebert

Yatima2975の回答で示唆されているように、さらに違いがあります。

substr()は、負の開始位置を文字列の末尾からのオフセットとして受け入れます。 substring()は違います。

_ mdn _ から:

Startが負の場合、substr()はそれを文字列の末尾からの文字インデックスとして使用します。

機能的な違いをまとめると:

begin-offsetが0以上の場合はsubstring(begin-offset, end-offset-exclusive)

begin-offsetが負の値の場合もあるsubstr(begin-offset, length)

32
JefferMC

私が最近遭遇したもう1つの問題は、IE 8では、"abcd".substr(-1)が誤って"abcd"を返すのに対し、Firefox 3.6は本来どおり"d"を返すことです。 sliceは両方で正しく動作します。

このトピックに関する詳細は ここ をご覧ください。

25
yatima2975

主な違いはそれです

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"        
12
Nate Lipp

違いは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'
7
CurnalCurz

スライスvsサブストリングvsサブストリングvs []メソッド

これらの各JavaScriptメソッドにはパフォーマンス上の利点があります。それに応じてこれらの機能を使用してください。

4
Ali007

substring(): 「start」と「end」の2つのパラメータがあります。

  • start パラメータは必須であり、抽出を開始する位置を指定します。
  • end パラメータはオプションで、抽出を終了する位置を指定します。

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
3
raju poloju

大きな違いは、 substr() is 廃止予定のメソッド であり、まだ使用できますが、将来的には完全に削除される予定であるため、慎重に使用する必要があります。あなたはあなたのコードからそれらの使用を取り除くために働くべきです。そして substring() メソッドは成功し、前者を指定しました。

0
5ervant

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
0