replace mit regex
Fritz
- javascript
0 wahsaga0 Fritz
0 ziegenmelker0 Fritz
Hallo,
Javascript scheint nach meinen bescheidenen Kenntnissen ja keine einfache Möglichkeit zu bieten, unerwünscht Zeichen am Anfang und Ende eines Strings zu entfernen. (oder doch?)
Ich hab mir also folgende regex gebastelt, um alle "+" am Anfang und Ende, sowie alle Leerzeichen am Anfang zu entfernen:
mystring = mystring.replace(/^(\s+|++)/,'').replace(/(++)$/,'');
Da mir das Ganze nicht sehr elegant erscheint, die Frage:
Sind offensichtliche Fehler in meiner regex?
Kann man das eleganter schreiben?
Insbesondere: wie kann man die doppelten .replace vermeiden (ich will ja in beiden Fällen - vorne und hinten - jeweils nur löschen, d.h. durch '' ersetzen.
Gruß Fritz
hi,
Insbesondere: wie kann man die doppelten .replace vermeiden (ich will ja in beiden Fällen - vorne und hinten - jeweils nur löschen, d.h. durch '' ersetzen.
in dem du dir nur das aus dem string heraussuchst, was hinter führenden plus-/leerzeichen und vor abschließenden pluszeichen an beliebigem text steht - und dann den gesamtstring durch diesen treffer ersetzt.
gruß,
wahsaga
Hallo,
in dem du dir nur das aus dem string heraussuchst, was hinter führenden plus-/leerzeichen und vor abschließenden pluszeichen an beliebigem text steht - und dann den gesamtstring durch diesen treffer ersetzt.
Ja, genau das soll der regex. Nur: wie mache ich das? indem ich alle führenden plus/leerzeichen und alle abschließenden pluszeichen lösche? Und dann sage, was übrigbleibt, ist mein String, durch den ich dann den Gesamtstring ersetze.
Da beißt sich die Katze in den Schwanz, bzw. ich dreh mich im Kreis.
Ich find einfach keinen regex, der folgendes macht: liefere mir _alle_ Zeichen eines Strings (also auch eventuelle Whitespace und Pluszeichen), die nach (beliebig vielen) führenden Whitespace oder Pluszeichen kommen. Entweder mir fehlt dazu die Phantasie, oder (wahrscheinlicher) die Kenntnisse.
Gruß Fritz
Hallo,
Hallo,
Javascript scheint nach meinen bescheidenen Kenntnissen ja keine einfache Möglichkeit zu bieten, unerwünscht Zeichen am Anfang und Ende eines Strings zu entfernen. (oder doch?)
doch. Hier findest du weitere Informationen:
http://de.selfhtml.org/javascript/objekte/regexp.htm
http://de.selfhtml.org/perl/sprache/regexpr.htm
mystring = mystring.replace(/^(\s+|++)/,'').replace(/(++)$/,'');
Da mir das Ganze nicht sehr elegant erscheint, die Frage:
Sind offensichtliche Fehler in meiner regex?
Kann man das eleganter schreiben?
Ja
Insbesondere: wie kann man die doppelten .replace vermeiden (ich will ja in beiden Fällen - vorne und hinten - jeweils nur löschen, d.h. durch '' ersetzen.
Dies sollte das gewünsche Erbebnis bringen:
myNewString = myString.replace(/\+| /g,"");
cu,
ziegenmelker
Hallo,
Dies sollte das gewünsche Erbebnis bringen:
myNewString = myString.replace(/\+| /g,"");
Ich fürchte daß damit auch Pluszeichen/Leerzeichen _innerhalb_ von myString replaced werden. Und genau das will ich nicht.
Gruß Fritz
Hallo,
Ich fürchte daß damit auch Pluszeichen/Leerzeichen _innerhalb_ von myString replaced werden. Und genau das will ich nicht.
verstehe. Die von dir angegebene RegEx versagt jedoch schon beispielsweise bei diesem String:
var myString = " ++ +Hinz+ Kunz +++";
Die einzige Lösung, die ich bisher gefunden habe, sieht so aus:
var myString = " ++ +Hinz+ Kunz +++";
myString = myString.substr(myString.search(/\w/)); // eventuell nach weiteren Zeichen suchen
pos = myString.search(/\++$/); // "+ " oder "++ " am Ende wird nicht erkannt
if (pos!=-1) {
myString = myString.substr(0,pos);
}
cu,
ziegenmelker