Sonderzeichen ersetzen

Eraser_Happenbach

Grünschnabel
Hallo,

ich habe das Problem, dass ich gerne Sonderzeichen im Text per JS ersetzt haben möchte, dies aber leider nicht hinbekomme.

Ein Beispieltext wäre:

An- und Abführungszeichen:
„Unsere Mitarbeiter haben das System gut angenommen."

Gedankenstrich:
Das wollen wir – zunächst für 3 Monate


Hier möchte ich das Anrührungszeichen und den Gedankenstrich ersetzt haben.

Wie sähe hier der entsprechende JS-Code aus?


Viele Grüße
Eraser
 
@queicherius: Ich möchte nicht die Umlaute ersetzen, sondern die Sonderzeichen wie die Anfrührungsstriche und einen Gedankenstrich.
Diese Zeichen sind bspw. in Word-Dateien enthalten und beim Copy&Paste werden die so mitgegeben, was zu Fehlern des verwendeten Zeichensatzes führt.

Habe schon eine Woche damit verbracht den Zeichensatz vom System zu korrigieren. Bin es nun aber leid und mache diese quick'n'dirty-Variante...
 
@Maik:

irgendwie mach ich was falsch.

PHP:
// text enthält meinen Text
text.replace(/(„)+/g, "hallo ");

Das Hallo soll dann durch " ersetzt werden, also "\"", richtig?

Der ersetzt mir aber garnichts. Firebug gibt mir aber auch keine Fehlermeldung aus und die Funktion läuft weiter...

VG
Eraser
 
Moin,

du müsstest das Zeichen im RegExp eigentlich direkt angeben...aber dann hast du es ja wieder da :)

Hier mal ein Workaround:
Code:
String.prototype.sanitize=function(cc)
{
 if(typeof cc=='undefined')cc=[8222,8211];
 e=document.createElement('fx');
 e.innerHTML='&#'+cc.join(';&#')+';';
 return this.replace(new RegExp('['+e.firstChild.data+']','g'),'');
}

Es werden die bereinigten Strings zurückgegeben.
Standardmässig werden erstmal nur die beiden genannten entfernt...du kannst das über den Array cc regeln, entweder beim Aufruf der Methode oder statisch in der Funktion selbst.

Kurzer Test:
Code:
alert(new String('„–Unsere– Mitarbeiter haben das System gut angenommen."').sanitize());

Man kann zwar auch Unicode-Zeichencodes in regulären Ausdrücken verwenden: (in JS sähe es so aus)
Code:
\u8222
...aber das ist halt kein Unicode, dann wäre ja alles in Butter.
Das Unicode-Zeichen ? ist was asiatisches ?
 
Danke an alle für die Tipps.

Ich habe es nun lösen können. Ich habe nicht bedacht, dass nicht direkt in der String-Variablen die Änderung gemacht wird.
Somit muss es so lauten:

HTML:
text = text.replace(/„/g, "\"");

Damit funktioniert es.
 
Zurück