Alle Sonderzeichen aus String löschen



  • Hallo,
    ich habe mir folgendes ausgedacht:

    String c;
    
    c=c.replaceAll("\"","");
    c=c.replaceAll("/","");
    c=c.replaceAll(":","");
    .
    .
    .
    

    Auf diese Weise alle Sonderzeichen aus dem String zu löschen ist natürlich ziemlich umständlich wobei hinschwerend hinzukommt, dass ich z.B. nicht weiss wie man nen . (PUNKT) aus dem String entfernt.
    Schreibe ich:

    c=c.replaceAll(".","");
    

    Kriege ich immer ne NullPointerException.

    Gibt es also eine elegantere Methode einen String von jeglichen Sonderzeichen zu "reinigen" ?

    Danke
    Romeo-G



  • JavaDoc sagt

    Replaces each substring of this string that matches the given regular expression with the given replacement.

    Der erste Parameter ist ein regulärer Ausdruck.

    Man könnte da auch mehrere Zeichen angeben
    z.B.

    String test = "dfhshfh/jfghjdfgh\\dngdgn:jghij.fhg";    
     test = test.replaceAll("(:|/|\\\\|\\.)","");
    

    Der Punkt und der Backslash sind Sonderzeichen die escaped werden müssen.
    (siehe dazu auch http://java.sun.com/j2se/1.4.2/docs/api/java/util/regex/Pattern.html )

    bis dänn, O'Dog



  • Vielen Dank bezüglich des .-Problems aber bei dem anderen Ansatz ist ein Fehler, denn wenn man die Sonderzeichen nicht einzeln eingibt dann betrachtet er die ZEichen die rausgeschnitten werden sollen nicht einzeln sondern als Kette.

    Wenn man also eingibt:
    c.replaceAll("\=\%\?);

    und das auf den String "=Ha?ll=o" anwendet, dann würde er (zumindest bei mir), nicht das gewünschte Ergebnis ("Hallo") liefern.

    Trotzdem Danke
    Romeo-G



  • Romeo-G schrieb:

    Wenn man also eingibt:
    c.replaceAll("\=\%\?);

    Aber warum sollte man das so eingeben?
    Aus dem Grund hab ich den Ausdruck geklammert und die einzelnen Zeichen durch pipes getrennt...

    denk mal drüber nach 😉

    O'Dog



  • also nur nochmal um alle Klarheiten zu beseitigen

    String test = "=Ha?ll=o";    
    test = test.replaceAll("(=|\\?)","");
    

Anmelden zum Antworten