spezielle Reg. Expression / split[]

  • Hallo

    angenommen man hat folgenden String:

    "abc\~def~ghi"

    Ziel ist es, den String durch das Zeichen "~" zu trennen, allerdings nur dann wenn vor dem Zeichen kein Escapezeichen steht. Die split[] Methode von java erlaubt eine reg. Expression anzugeben und mein erster Versuch war:

    split("[^\\\\]~")

    Ist natürlich falsch weil auch das vorherige Zeichen abgeschnitten wird. Kann mir da jemand weiterhelfen?

    Sebastian

  • Schaut für mich so aus, als ob das mit split nicht gehen würde. Falls es wirklich nur um diese eine spezielle Anwendung geht, würde ich wohl einfach mit "~" splitten und gegebenenfalls wieder Strings zusammenpasten. Das dürfte recht schnell hingeschrieben sein.

    Wenn doch mehr nötig ist oder das effizienter sein muß, brauchst du was mächtigeres.

    *plantsch*

  • Zitat

    Ziel ist es, den String durch das Zeichen "~" zu trennen, allerdings nur dann wenn vor dem Zeichen kein Escapezeichen steht.

    Du musst eigentlich nur die Anzahl der \ davor zählen. Es könnte ja auch \\~ stehen -- somit wäre die Tilde nicht mehr escaped.
    Bei gerader Anzahl: nicht splitten; bei ungerader: splitten.

  • Kniet nieder vor dem zero-width negative lookbehind operator ?<! :cool: :

  • hmmm ... mit dem split() fällt mir das fürs Erste auch nicht eleganter ein, als dass man die "\~" an jedes Element < n wieder hinzufügen müsste ...

    Vielleicht willst Du Dir aber mal den StringTokenizer anschauen ... ?

    P.S.: Lösung oberhalb scheint eleganter zu sein ... ;)

    *** Make it idiot proof, and someone will build a better idiot. ***

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!