Javascript String Replace ohne Regex

Wer eine einfache Variante zum String Replacement benötigt, kann entweder den Regex-Weg gehen (siehe Nachbildung der PHP-Funktion str_replace), oder einen schnuckeligen Trick anwenden:

alert("Finde mich".split("Finde").join("Replace"));

Den String zum Array am Suchwort zerlegen und dann mit dem Ersatz das Array wieder zusammenfügen. Brauchte letztens eine Quick&Dirty-Lösung, um Zahlen des Formats

600.000,54

in das Javascript geläufige Zahlenformat

600000.54

zu überführen, also Dezimalpunkte raus und Komma durch Punkt ersetzen. Gemacht habe ich es so:

var num = "600.000,54".split(".").join("").split(",").join(".");

Gewinnt sicher keinen Schönheitspreis, die innovative Verwendung von join und split gefielen mir dann aber doch zu gut ;).

Weitere Posts:

Dieser Beitrag wurde unter Javascript, Quicktips, webdev veröffentlicht. Setze ein Lesezeichen auf den Permalink.

4 Antworten auf Javascript String Replace ohne Regex

  1. Gabriel sagt:

    Interessante Anwendung! Hast Du getestet, ob die Version mit split schneller ist als replace? Es ist möglich, bei split eine regex zu benutzen und falls der String vom Interpreter automatisch in eine Regex konvertiert wird, dann ist das Ganze zumindest vom Performance-Standpunkt aus wahrscheinlich witzlos …

  2. Florian sagt:

    Warum nicht einfach so?
    alert('Finde mich'.replace('Finde', 'Replace'));
    var num = '600.000,54'.replace('.', '').replace(',', '.');

    Oder falls man es als number braucht:
    var num = +'600.000,54'.replace('.', '').replace(',', '.');

    Klappt genau so gut und ist viel leserlicher meiner Meinung nach.

  3. Sehr interessant.
    Ich finde die hier vorgestellte Version liest sich auch sehr gut.

  4. Andreas K. sagt:

    auf der Seite http://jsperf.com/replace-vs-split-join-vs-replaceall/9 gibt es einen schönen Test, split()Join() ist dort langsamer als replace (oder http://jsperf.com/split-join-vs-replace/2)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert