Alternative bzw. erweiterte Replace Funktion

  • Antworten:4
Kraeusi
  • Forum-Beiträge: 8

09.09.2012, 18:34:31 via Website

Hallo,

ich habe eine kleine Frage, bezüglich der Verarbeitung von einen String.

Ich habe in einem String mehrere Zeichenfolgen, die wie folgt aussehen können:
<!-- s;-) --><img src="{SMILIES_PATH}/icon_wink.gif" alt=";-)" title="Wink" /><!-- s;-) -->
<!-- s:-) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=";-)" title="Smile" /><!-- s:-) -->

Ich könnte nun jeden Befehl mit replace zu dem Zeichen-Code ( :-) ) umwandeln, jedoch ist es viel Code (bei 105 Smilies), weshalb ich mich frage ob es nicht einfacher gehe würde?

Danke schon im Voraus.

Gruß Kraeusi

Antworten
Florian B.
  • Forum-Beiträge: 284

09.09.2012, 18:58:51 via Website

Kannst du nochmal genauer erklären was das Problem ist? Was für Befehle meinst du? Mir ist noch nicht ganz klar, was du mit was ersetzten willst.

— geändert am 09.09.2012, 18:59:16

Antworten
Kraeusi
  • Forum-Beiträge: 8

09.09.2012, 19:08:58 via Website

Ja, Erklärungen sind meist nicht meine Stärke :(

Ich habe z.B. folgenden String:

String message = "ach ist das wetter in österreich schön <!-- s:-) --><img src=\"{SMILIES_PATH}/icon_smile.gif\" alt=\":-)\" title=\"Smile\" /><!-- :-) --> \n\n aber so schöner als in neuseeland ist es nicht <!-- s:-( --><img src=\"{SMILIES_PATH}/icon_sad.gif\" alt=\":-(\" title=\"Sad\" /><!-- s:-( -->";

Ich habe somit bis zu 105 verschiede Möglichkeiten von einem Smilie, da ich noch nicht diese Elemente durch Bilder ersetzen kann, wollte ich sie zum Quelltext umwandeln (nur ;-), :-(, ....).

Die einzige Methode, welche ich kenne, ist 105 mit replace den String message durchzujagen, nach dem Motto:
String message = message.replace(" <!-- s:-) --><img src=\"{SMILIES_PATH}/icon_smile.gif\" alt=\":-)\" title=\"Smile\" /><!-- :-) -->", ":-)");
String message = message.replace("<!-- s:-( --><img src=\"{SMILIES_PATH}/icon_sad.gif\" alt=\":-(\" title=\"Sad\" /><!-- s:-( -->", ":-(");

Ich hoffe damit ist es etwas verständlicher :)

Danke und Gruß,
Kraeusi

Antworten
Florian B.
  • Forum-Beiträge: 284

09.09.2012, 19:20:51 via Website

Ah ok jetzt verstehe ich in etwa was du meinst. Du könntest hier mit Regulären Ausrücken arbeiten. Das sollte funktionieren, da die Teile die du ersetzen willst in etwa gleich aufgebaut sind und auch schon den Teil mit dem du sie ersetzen willst enthalten. Mit dem Wert des "alt"-Attribut.

Aber gleich mal vorweg, Reguläre Ausdrücke sind nicht ganz trivial, da musst du dich etwas reinfuchsen. Google am besten mal nach "Regex Java", da solltest du ein Haufen Zeug zu finden.

Antworten
Gelöschter Account
  • Forum-Beiträge: 694

09.09.2012, 20:46:02 via Website

Nimm Pattern/Matcher. Der Pattern lautet in etwas:

<!-- s:-( --><img src=\"{SMILIES_PATH}/(.*?)\" alt=\"(.*?)\" title=\"(.*?)\" /><!-- s:-( -->

Es gibt noch ein paar Sonderzeichen - die musst Du noch escapen. Danach hast Du in den groups (.*?) alles was Du brauchst.

Antworten