Zweites Vorkommen in Zeichenkette ersetzen
Timo
- javascript
Hallo,
wie kann ich innerhalb eines Strings das zweite Aufkommen einer variablen Zeichenkette ersetzen.
Bisher läuft es mit
child.name = child.name.replace(/([[0-9]+])/g,'[' + number + ']');
welches in einem String wie "test[0]" die "[0]" durch eine andere Zahl ersetzt.
Nun möchte ich aber in einem String "test[0][0]" nur das zweite Vorkommen der eckigen Klammer ersetzen. Wie stelle ich das am besten an? Kann dies auch über einen regulären Ausdruck erreicht werden? Oder muss ich die Zeichenkette aufteilen?
Über Anregungen wäre ich dankbar!
LG Timo
Hallo Timo
eine Idee wäre zum Beispiel, den String mit search nach deinen schon vorhandenen regularen Ausdruck zu durchsuchen, den String an der Fundstelle aufzutrennen, im zweiten Teil deine Ersetzung durchzuführen und dann das Ergebnis wieder zusammenzusetzen.
Tut das folgende Beispiel das, was du willst?
<script type="text/javascript">
var sTeststring = 'test[0][0]';
var number = 7;
iPos = sTeststring.search(/(\[[0-9]+\])/);
sTeil1 =sTeststring.substring(0,iPos+1);
sTeil2 =sTeststring.substring(iPos+1);
sTeil2 = sTeil2.replace(/(\[[0-9]+\])/,'[' + number + ']');
sErgebnis = sTeil1 + sTeil2;
alert(sErgebnis);
</script>
liebe Grüße mbr
Hi,
child.name = child.name.replace(/([[0-9]+])/g,'[' + number + ']');
Wie stelle ich das am besten an?
Es gibt wohl elegantere Lösungen ...
Kann dies auch über einen regulären Ausdruck erreicht werden? Oder muss ich die Zeichenkette aufteilen?
... aber so klappt es (wenn die beiden eckigen klammer direkt hintereinander stehen):
.replace(/([\d+])([\d+])/g,'$1[' + 'x' + ']');
Das $1 wird mit dem Inhalt der ersten (runden) Klammer des RegExp ersetzt.
\d ist das gleiche wie [0-9]
mfG,
steckl