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
、質問者が提示したケースに合わせてコードを最適化しても(つまり、変更された文字列に何も追加しない)、さまざまな方法の相対的なパフォーマンスは変わりません。