Hallo,
Ich möchte in einem String sicherstellen, dass um ein Gleicheitszeichen immer ein Leerzeichen ist. Also wäre falsch "eins=zwei", richtig müsste es lauten "eins = zwei".
Ich dachte ich könnte es so lösen:
sStatement = sStatement.replace(/\S."=".\S/," = ");
^ein Zeichen, welches kein Leerzeichen oder White-Space-Steuerzeichen ist (\S), gefolgt von einem beliebigen Zeichen (.), gefolgt von der Zeichenfolge '"="', gefolgt von einem beliebigen Zeichen (.), gefolgt von \S (siehe vorn) soll ersetzt werden durch die Zeichenfolge ' = '.
alert('Der Test"="zum Ersetzen'.replace(/\S."=".\S/," = "));
ergibt 'Der Te = m Ersetzen'
Das funktioniert aber nicht. Ich habe es mit SELFHTML schon probiert, bin aber nicht zurecht gekommen, könnt ihr mir helfen?
Das entsprechende Kapitel in SelfHTML http://de.selfhtml.org/javascript/objekte/string.htm#replace und auch die Kapitel http://de.selfhtml.org/javascript/objekte/regexp.htm und http://de.selfhtml.org/perl/sprache/regexpr.htm kennst Du also.
Das Problem ist, dass auf \S alles passt, was kein White-Space ist und dass diese Zeichen dann mit ersetzt werden. Ich würde zwei Durchläufe machen. Zuerst alle möglichen Leerzeichen \s um Gleichheitszeichen entfernen, und dann alle Gleichheitszeichen durch " = " ersetzen.
var TestString = "a=1; b= 2; c =3; d = 4; e = 5; ab=1.1; bc= 2.2; cd =3.3; de = 4.4; ef = 5.5; \"test 1\"=1; \"test 2\"= 2; \"test 3\" =3; \"test 4\" = 4; \"test 5\" = 5;";
var Ergebnis = TestString.replace(/\s*=\s*|\s*=|=\s*/g, "=");
alert(Ergebnis);
Ergebnis = Ergebnis.replace(/=/g, " = ");
alert(Ergebnis);
viele Grüße
Axel