文字列のスプライスメソッドはありますか? 質問する

文字列のスプライスメソッドはありますか? 質問する

Javascript はsplice配列でのみ機能します。文字列にも同様の方法がありますか? それとも独自のカスタム関数を作成する必要がありますか?

substr()、、およびメソッドsubstring()は、抽出された文字列を返すだけで、元の文字列は変更しません。私がやりたいのは、文字列から一部を削除し、その変更を元の文字列に適用することです。さらに、replace()メソッドでできることとまったく同じように、インデックスから始まり、別のインデックスで終わる部分を削除したいので、このメソッドは私のケースでは機能しません。splice()文字列を配列に変換しようとしましたが、これは適切な方法ではありません。

ベストアンサー1

次のように文字列を 2 回スライスする方が高速です。

function spliceSlice(str, index, count, add) {
  // We cannot pass negative indexes directly to the 2nd slicing operation.
  if (index < 0) {
    index = str.length + index;
    if (index < 0) {
      index = 0;
    }
  }

  return str.slice(0, index) + (add || "") + str.slice(index + count);
}

次のように、分割の後に結合を使用する (Kumar Harsh の方法) よりも優れています。

function spliceSplit(str, index, count, add) {
  var ar = str.split('');
  ar.splice(index, count, add);
  return ar.join('');
}

こちらはjsperfこれら 2 つの方法と他のいくつかの方法を比較します。(jsperf は数か月前からダウンしています。コメントで代替案を提案してください。)

上記のコードは、一般的なの機能ではsplice、質問者が提示したケースに合わせてコードを最適化しても(つまり、変更された文字列に何も追加しない)、さまざまな方法の相対的なパフォーマンスは変わりません。

おすすめ記事