Zum einen, um es zu arbeiten:
dieses Bedürfnis zu befriedigen:
"wie die Zeichenfolge zwischen dem Zeichen Text zu ersetzen [a] und Text [b]"
function replaceStringPortion(text, start, end, replacement, trim) {
text = !!trim ? text.trim() : text;
var fragments = [
text.substr(0, start),
text.substr(start, end - start + 1),
text.substr(end + 1, text.length)
];
fragments[1] = replacement;
return fragments.join('');
}
Aber die Notwendigkeit, die Sie beschrieben zu erfüllen (der Abschnitt nach den Text zwischen a
und 01 zu ersetzen,):
function replaceAfterStringPortion(text, start, end, replacement, trim) {
text = !!trim ? text.trim() : text;
var fragments = [
text.substr(0, start),
text.substr(start, end - start + 1),
text.substr(end + 1, text.length)
];
fragments[2] = replacement;
return fragments.join('');
}
Zweitens .substr()
und .replace()
funktionierte gut.Hier ist der Grund:
Wenn Sie Nest Ihren Ausdruck Befehl kann es klar zu sagen:
text = text.replace(
text.substring(5,10), // Returns "Hello"
"Something"
);
Also wirklich, was Sie tun, in dieser Reihenfolge:
text.substring(5,10)
die "Hello"
zurück
text.replace("Hello", "Something");
, die, wie erwartet, "SomethingHello"
zurückgeben
Dies wird erwartet, da .replace()
das erste Vorkommen der Zeichenfolge oder Muster ersetzt Sie passieren:
str.replace(regexp|substr, newSubStr|function)
...
substr (Muster)
Ein String, soll durch newSubStr ersetzt werden. Es wird als eine Verbatim-Zeichenfolge behandelt und wird nicht als regulärer Ausdruck interpretiert. Nur das erste Vorkommen wird ersetzt.
Was ist los mit 'text = textstring (0,5) +" Etwas ";'? – nnnnnn
nun, mein Code ist kompliziert, aber die eigentliche Frage ist: Wie ersetzt man die Zeichenfolge zwischen den Zeichen text [a] und text [b], wenn die Zeichenfolge bereits im Text vorlag? – aikich
Meinst du, dass du * all * des Textes zwischen zwei Indexwerten durch irgendeinen anderen Text ersetzen willst, oder wenn du innerhalb der durch zwei Indexwerte spezifizierten Teilzeichenfolge suchen willst und nur innerhalb dieser Teilzeichenfolge eine Ersetzung vornehmen willst? Ich kann mir zwei Möglichkeiten vorstellen, wo es egal ist, ob der Suchstring außerhalb des angegebenen Bereichs erscheint. – nnnnnn