7

開始位置と長さを指定して、文字列の部分文字列を置き換えるにはどうすればよいですか?

私は次のようなことを望んでいました:

var string = "This is a test string";
string.replace(10, 4, "replacement");

それstringは等しいでしょう

"this is a replacement string"

..しかし、私はそのようなものを見つけることができません。

どんな助けでも感謝します。

4

4 に答える 4

9

このような:

var outstr = instr.substr(0,start)+"replacement"+instr.substr(start+length);

文字列のプロトタイプに追加できます。

String.prototype.splice = function(start,length,replacement) {
    return this.substr(0,start)+replacement+this.substr(start+length);
}

splice(同名の配列関数に非常に似ているため、私はこれを呼び出します)

于 2012-12-18T01:46:37.783 に答える
3

価値のあることとして、この関数は、最初のインデックスと長さではなく、2 つのインデックスに基づいて置き換えます。

splice: function(specimen, start, end, replacement) {
    // string to modify, start index, end index, and what to replace that selection with

    var head = specimen.substring(0,start);
    var body = specimen.substring(start, end + 1); // +1 to include last character
    var tail = specimen.substring(end + 1, specimen.length);

    var result = head + replacement + tail;

    return result;
}
于 2015-05-12T20:48:38.323 に答える
2

短い正規表現バージョン:

str.replace(new RegExp("^(.{" + start + "}).{" + length + "}"), "$1" + word);

例:

String.prototype.sreplace = function(start, length, word) {
    return this.replace(
        new RegExp("^(.{" + start + "}).{" + length + "}"),
        "$1" + word);
};

"This is a test string".sreplace(10, 4, "replacement");
// "This is a replacement string"

デモ: http://jsfiddle.net/9zP7D/

于 2012-12-18T01:52:55.797 に答える
0

Underscore String ライブラリには、指定したとおりに機能する splice メソッドがあります。

_("This is a test string").splice(10, 4, 'replacement');
=> "This is a replacement string"

ライブラリには他にも便利な機能がたくさんあります。それは 8kb で記録され、cdnjsで利用できます。

于 2012-12-18T01:53:41.037 に答える