Zeichen durch anderes ersetzen
Markus
- javascript
Hallo zusammen,
ich möchte einen Sting an einer bestimmten Position durch ein anderes Zeichen ersetzen:
Beispiel: an der Stelle 4 soll ein X stehen
string: 12345
Output: 123X5
Gibt es dafür eine Funktion? substr oder sowas?
Danke vielmals...
Hallo Markus.
ich möchte einen Sting an einer bestimmten Position durch ein anderes Zeichen ersetzen:
Dafür gibt es http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=replace(), was du auf deinen String anwenden kannst.
(Anmerkung: der erste Parameter muss kein regulärer Ausdruck sein, ein einfacher String genügt auch.)
Einen schönen Sonntag noch.
Gruß, Ashura
Hi Ashura,
ich brauche aber eien Funktion , die immer an der vierten Stelle des Strings ein Zeichen ersetzt.
Replace arbeitet doch mit einem Suchmuster...
Markus
Hallo Markus.
ich brauche aber eien Funktion , die immer an der vierten Stelle des Strings ein Zeichen ersetzt.
Replace arbeitet doch mit einem Suchmuster...
Dann schreibst du dir ein solches Suchmuster (also einen regulären Ausdruck), was das Zeichen an vierter Stelle innerhalb eines Strings austauscht.
Du hast dich bereits mit <http://de.selfhtml.org/javascript/objekte/regexp.htm@title=regulären Ausdrücken> befasst?
Einen schönen Montag noch.
Gruß, Ashura
Hi Ashura,
"Du hast dich bereits mit regulären Ausdrücken befasst?"
Nein.
In VBA kann man doch einfach die Positionsnummer angeben was und wieviel ersetzt werden soll.
Bye
Markus
Hallo Markus.
"Du hast dich bereits mit regulären Ausdrücken befasst?"
Nein.
Dann solltest du dies nun tun. Damit kannst du das von dir gewünschte erreichen.
Wenn du Fragen hast, kannst du diese hier gerne stellen.
In VBA kann man doch einfach die Positionsnummer angeben was und wieviel ersetzt werden soll.
Dass VBA aber nicht JavaScript ist, muss ich sich sicher nicht erst erwähnen.
Einen schönen Montag noch.
Gruß, Ashura
Hi Ashura,
ich brauche aber eien Funktion , die immer an der vierten Stelle des Strings ein Zeichen ersetzt.
Replace arbeitet doch mit einem Suchmuster...
Markus
x = "123456";
x[3] = "X";
alert(x);
Schönen Tag noch.
Hallo Steffen.
x = "123456";
x[3] = "X";
alert(x);
Hast du dies auch einmal ausprobiert?
Einen schönen Montag noch.
Gruß, Ashura
--
[The End of an Era...](http://www.nightwish.com/english/lettertotarjaen.html)
Hallo Steffen.
x = "123456";
x[3] = "X";
alert(x);
>
> Hast du dies auch einmal ausprobiert?
Mmh, offensichtlich nicht.
Dann halt doch besser mit substr oder regexp's.
Ich hatte Problem, eine RegExp zu schreiben, die auch Zeilenumbrüche korrekt berücksichtigt. Sonst könnte das aber wie folgt ausschauen.
~~~javascript
x="123456";
x = x.replace(/^(.{3})./, "$1X");
alert(x);
Diesmal ausprobiert.
Hallo Steffen.
x = "123456";
x[3] = "X";
alert(x);
>
> ~~~javascript
> x="123456";
> x = x.replace(/^(.{3})./, "$1X");
> alert(x);
>
Und warum nicht gleich beide Varianten kombinieren und sich damit sogar den regulären Ausdruck ersparen?
var x = "123456";
x = x.replace(x[3],"X");
Einen schönen Montag noch.
Gruß, Ashura
hi,
Und warum nicht gleich beide Varianten kombinieren und sich damit sogar den regulären Ausdruck ersparen?
var x = "123456";
x = x.replace(x[3],"X");
Was käme da bei beispielsweise
~~~javascript
var x = "1a3a5a";
x = x.replace(x[3],"X");
heraus?
gruß,
wahsaga
Hallo wahsaga.
Was käme da bei beispielsweise
var x = "1a3a5a";
x = x.replace(x[3],"X");
> heraus?
Ich muss zugeben, dass mich die Ausgabe etwas erstaunt.
Woran liegt es?
Einen schönen Montag noch.
Gruß, Ashura
--
[The End of an Era...](http://www.nightwish.com/english/lettertotarjaen.html)
hi,
Ich muss zugeben, dass mich die Ausgabe etwas erstaunt.
Mich auch.
Allerdings eher deshalb, weil ich sowohl mit deinem als auch mit meinem Code im IE 5.01 lediglich den unveränderten Originaltext zurückerhalte.
(getestet über
javascript:var x = "123456";alert(x.replace(x[3],"X"));
in der Adresszeile.)
Woran liegt es?
Unter der Annahme, dass dein Beispiel "funktionieren" würde, hätte ich dann für mein Beispiel die Ausgabe "1X3X5X" erwartet. Aber siehe oben, im IE 5.01 kommt auch die nicht.
gruß,
wahsaga
Hallo wahsaga.
Ich muss zugeben, dass mich die Ausgabe etwas erstaunt.
Mich auch.
Allerdings eher deshalb, weil ich sowohl mit deinem als auch mit meinem Code im IE 5.01 lediglich den unveränderten Originaltext zurückerhalte.
Ich erhalte im Fx und Konqueror die Ausgabe „1X3a5a“.
(getestet über
javascript:var x = "123456";alert(x.replace(x[3],"X"));
in der Adresszeile.)
Siehe oben.
Woran liegt es?
Unter der Annahme, dass dein Beispiel "funktionieren" würde, hätte ich dann für mein Beispiel die Ausgabe "1X3X5X" erwartet.
Warum? Du wendest doch die replace-Methode lediglich auf das 4. Zeichen innerhalb der Zeichenkette an, warum erwartest du hier also, dass jedes zweite Zeichen ersetzt wird?
Aber siehe oben, im IE 5.01 kommt auch die nicht.
Im Opera ebenso.
Merkwürdig.
Einen schönen Montag noch.
Gruß, Ashura
Hallo.
(getestet über
javascript:var x = "123456";alert(x.replace(x[3],"X"));
in der Adresszeile.)Siehe oben.
Korrektur: Hier funktioniert es natürlich, ich erhalte wie gewünscht „123X56“.
Einen schönen Montag noch.
Gruß, Ashura
Hallo.
Ich erhalte im Fx und Konqueror die Ausgabe „1X3a5a“.
Jetzt wird es konfus. Ersetze ich das allererste „a“ gegen irgend einen anderen beliebigen Buchstaben, wird die Funktion wiederum korrekt ausgeführt und ich erhalte anstelle des vierten Zeichens das gewünschte „X“.
Setze ich das „a“ an die erste Stelle, wird es dort gegen das „X“ ersetzt.
Setze ich davor wiederum mindestens drei andere Zeichen, wird wiederum das zweite Zeichen ersetzt...
Kann mir jemand dieses Verhalten erklären?
Einen schönen Montag noch.
Gruß, Ashura
Hallo.
Ich erhalte im Fx und Konqueror die Ausgabe „1X3a5a“.
Jetzt wird es konfus. Ersetze ich das allererste „a“ gegen irgend einen anderen beliebigen Buchstaben, wird die Funktion wiederum korrekt ausgeführt und ich erhalte anstelle des vierten Zeichens das gewünschte „X“.
Setze ich das „a“ an die erste Stelle, wird es dort gegen das „X“ ersetzt.
Setze ich davor wiederum mindestens drei andere Zeichen, wird wiederum das zweite Zeichen ersetzt...Kann mir jemand dieses Verhalten erklären?
Ich hoffe, daß ist jetzt nicht ernst gemeint...
var x = "1a3a5a";
x = x.replace(x[3],"X");
// gleich > x.replace("a","X"); // da ((x[3] == "a" && x[3] === "a") == true)
// gleich > x.replace(new RegExp("a"),"X");
// gleich > x.replace(/a/,"X"); // man beachte nicht global!
// Der erste Parameter bei replace ist vom Typ RegExp.
alert(x); // 1X3a5a
Wiederschaun.
Hallo Steffen.
Kann mir jemand dieses Verhalten erklären?
Ich hoffe, daß ist jetzt nicht ernst gemeint...
Doch durchaus.
var x = "1a3a5a";
x = x.replace(x[3],"X");
// gleich > x.replace("a","X"); // da ((x[3] == "a" && x[3] === "a") == true)
// gleich > x.replace(new RegExp("a"),"X");
// gleich > x.replace(/a/,"X"); // man beachte nicht global!
// Der erste Parameter bei replace ist vom Typ RegExp.
alert(x); // 1X3a5a
Ah, danke. Das Brett ist weg.
Einen schönen Montag noch.
Gruß, Ashura
--
[The End of an Era...](http://www.nightwish.com/english/lettertotarjaen.html)
Hallo Markus,
Gibt es dafür eine Funktion? substr oder sowas?
Es gibt substr() und substring() und replace(), alle zu finden auf http://de.selfhtml.org/javascript/objekte/string.htm,
Gruß,
Dieter
Hi Dieter,
dann geht es wohl nur mit einer Multifunktion, da es ja wohl keine Einzelfunktion dafür gibt.
Bye
Markus