1020

これら2つの方法の違いを知っている人はいますか?

String.prototype.slice
String.prototype.substring
4

8 に答える 8

1027

slice()substring()いくつかの異なる動作のように機能します。

Syntax: string.slice(start, stop);
Syntax: string.substring(start, stop);

共通点:

  1. start等しい場合:stop空の文字列を返します
  2. 省略stop時:文字列の末尾まで抽出
  3. いずれかの引数が文字列の長さよりも大きい場合は、文字列の長さが代わりに使用されます。

の違い :substring()

  1. の場合start > stopsubstringこれらの 2 つの引数を交換します。
  2. いずれかの引数が負または である場合NaN、それは であるかのように扱われ0ます。

の違い :slice()

  1. の場合start > stopslice()空の文字列を返します。( "")
  2. 負の場合: Firefoxstartとまったく同じように、文字列の末尾から char を設定します。substr()この動作は、Firefox と IE の両方で見られます。
  3. が負の場合stop: stop をstring.length – Math.abs(stop)(元の値) にMath.max(0, string.length + stop)設定します

出典:プログラミングと開発の基礎: Javascript: substr() vs substring()

于 2010-02-11T10:36:25.193 に答える
138

TL;DR;

  • 停止する (ただし含めない) インデックス (位置) がわかっている場合は、 を使用しますslice()
  • 抽出する文字の長さがわかっている場合は、 を使用しますsubstr()

それ以外の場合は、完全な比較のために読み進めてください

構文

  • string.slice(start,end)
  • string.substr(start,length)
  • string.substring(start,end)

注#1slice()==substring()

それは何をしますか?

  • このslice()メソッドは、文字列の一部を抽出し、抽出した部分を新しい文字列で返します。
  • このsubstr()メソッドは、指定された位置の文字から始まる文字列の一部を抽出し、指定された数の文字を返します。
  • このsubstring()メソッドは、文字列の一部を抽出し、抽出した部分を新しい文字列で返します。

注 2 :slice()==substring()

元の文字列を変更しますか?

  • slice()しません
  • substr()しません
  • substring()#3に注意しないで ください:slice()==substring()

負の数を引数として使用する

  • slice()文字列の末尾から始まる文字を選択します
  • substr()文字列の末尾から始まる文字を選択します
  • substring()実行しない

注 3 :slice()==substr()

最初の引数が 2 番目の引数より大きい場合

  • slice()実行しない
  • substr()2 番目の引数は位置ではなく長さの値であるため、問題なく通常どおり実行されます。
  • substring()2 つの引数を交換し、通常どおり実行します

最初の引数

  • slice()必須、次を示します: 開始インデックス
  • substr()必須、次を示します: 開始インデックス
  • substring()必須、次を示します: 開始インデックス

注 4 :slice()==substr()==substring()

2 番目の引数

  • slice()オプション、抽出を終了する位置 (その位置まで、ただしそれを含まない)
  • substr()オプション、抽出する文字数
  • substring()オプション、抽出を終了する位置 (その位置まで、ただしそれを含まない)

注#5slice()==substring()

2 番目の引数を省略した場合はどうなりますか?

  • slice()start-position から文字列の末尾までのすべての文字を選択します
  • substr()start-position から文字列の末尾までのすべての文字を選択します
  • substring()start-position から文字列の末尾までのすべての文字を選択します

注#6slice()==substr()==substring()

slice()したがって、との間には違いがあると言えますがsubstr()substring()は基本的に のコピーですslice()

于 2015-08-10T01:58:12.777 に答える