Sönke Tesch: Aus <textarea>-Eingabe die Zeilenumbrüche entfernen

Beitrag lesen

ich steh vor einem Rätsel! Wenn ich folgende Funktion anwende:

var word = (string);

Was soll denn das bewirken?

word=word.replace(/\n/g,"hier");

dann wird aus

der test
des forms
geht los

folgendes:

der test
hierdes forms
hiergeht los

Das bedeutet: Es werden zwar alle Zeilenumbrüche gefunden und auch ersetzt, nur bleiben sie trotzdem weiter bestehen!

Du verwendest sicherlich Windows. Zeilenumbrüche unter Windows bestehen aus _zwei_ Zeichen: dem Wagenrücklauf \r gefolgt von einem Zeilenvorschub \n (Mac: nur \r, Unix: nur \n). Dementsprechend mußt Du auch beide Zeichen ersetzen:

word=word.replace(/[\n\r]{1,2}/g,"hier");

Der Bereich der eckigen Klammern stellt ein Zeichen dar (nur eines!), das aus der Gruppe der in den Klammern aufgeführten Zeichen bestehen darf ("Zeichenklasse"). Hier darf also entweder ein \n oder ein \r stehen.
Die geschweifte Klammer dahinter mit dem 1,2 drin besagt, daß das vorige Objekt (also unsere Zeichenklasse) ein- oder zweimal vorkommen darf.
Damit hast Du dann alle Möglichkeiten abgedeckt: \n, \r, \r\n und, Irrtümer sollen ja vorkommen, auch \n\r.

Gruß,
  soenk.e