Hallo, bin auf dem Gebiet Java ein Newbie, deshalb bitte nicht schlagen..
Ich suche eine spezielle Suchen-Ersetzen-Funktion für einen Chat.
Und zwar geht es da um eine Bold und Italic Funktion. Ich will es am Beispiel Bold erklären - Kursiv wäre der selbe Weg.
Wird im Chat ein + geschrieben, soll alles folgende Fett werden. Bisher kein Problem, doch nun das dicke Aber - wird im Satz ein weiteres + geschrieben, soll Fett beendet werden.
Also der Satz "Ich bin +ein fetter+ Text" soll so aussehen "Ich bin ein fetter Text"
Ich habe es mit replace versucht, aber da werden alle + durch ersetzt.
Es müsste quasi ein flag auf false stehen und wenn einmal + mit ersetzt wurde auf true gestellt werden. Beim nächsten + wird es durch ersetzt und der Zeiger wieder auf false. Auch wenn im Text kein zweites + zum abschliessen kommt, sollte der Bold-Tag am Textende gesetzt werden.
Gibts da eventuell etwas brauchbares oder zumindest einen Tipp? Wäre furchtbar nett, da ich an dem Teil schon ewig sitz und nie klappt es...
Hm Danke.
Also meinst du, dass dabei Reguläre Ausdrücke weiterhelfen?
Leider hab ich davon keine Ahnung. Könntest du mir da evtl. ein Codebeispiel nennen?
Wäre auch leichter umzusetzen
Aber die Chatter sind Gewohnheitstiere und kennen das so aus anderen Chats und wollen es so auch haben.
Aber mit den RegEx wird es wohl Jahre dauern, bis ich dahintergestiegen bin
tja. wenn man es nicht versucht ... kein kommentar.
die grundlagen sind total easy. also ich habe sie noch nicht mit java verwendet, aber es sollten doch eigentlich zuuuu große unterschiede z.b. zu PHP sein.
hoffe ich mal ;-)
String s = "Das+ist ein fetter + Text + f + g";
while ( s.indexOf( "+" ) != -1 ) {
s = s.replaceFirst( "\\+", "[b]" );
s = s.replaceFirst( "\\+", "[/b]" );
}
System.out.println( s );
}
d.h. solange es noch + im string gibt ersetzte das erste durch , das zweite durch
Die methode ist aber nicht sehr elegant - ich weiß aber nicht ob und wenn ja wie Java backtracking erlaubt
Auch wenn die Methode vielleicht nicht elegant ist(?) funktioniert es super. Danke, deathbyaclown.
Gibt es denn noch eine Möglichkeit zu prüfen, dass wenn zwar gesetzt ist aber kein folgt, dennoch ein abschliessendes [/b] ans Stringende gesetzt wird?
Wenn nicht, muss ich dem String eben von Anfang an die Endtags zuweisen.
Danke
@Student, wer hat gesagt, dass ich es nicht versuche? PHP != Java und auch wenn es da nicht zuuuu große unterschiede gibt, versteht es vielleicht der eine besser/schneller als der andere. Selbst mit PHP hab ich meine Problem bei RegExp
PHP != Java und auch wenn es da nicht zuuuu große unterschiede gibt, versteht es vielleicht der eine besser/schneller als der andere. Selbst mit PHP hab ich meine Problem bei RegExp
Die Regexes in den verschiedenen Sprachen unterscheiden sich vorallem in der Mächtigkeit. Beispielsweise Zero-width-look-ahead wird man nicht in jeder Implementierung finden. Ausserdem ist die Syntax teilweise etwas unterschiedlich.