webForumDet fria alternativet

leta upp :), ;), :D i en String

3 svar · 260 visningar · startad av jme

jmeMedlem sedan maj 20011 967 inlägg
#1

Hej!

Jag försöker implementera smileys i en chat.

Dvs om man skriver :), ;), :D osv så byts de ut mot motsvarande bild...

Vad vore ett bra och enkelt sätt att leta upp dessa strängar från en String?

Om jag har:


String text = "Hello       :)      World!";

StringTokenizer token = new StringTokenizer(text);

En token separaras från andra token vanligtvis av ett mellanslag. Men eftersom StringTokenizer inte skiljer på ett mellanslag eller tre mellanslag så har jag problem med att om det just finns flera mellanslag mellan varje ord i Stringen.

Dvs om man skriver in tex ett :) så skall den bytas ut mot en bild.
Denna bild ersätter då :). För att placera bilden på rätt ställe i texten så måste jag veta hur många mellanslag det finns mellan varje token.

Help me!

ViktorMedlem sedan aug. 20021 710 inlägg
#2

EDIT: Kommer alltid på saker efteråt :) Detta gäller bara JDK 1.4, om du kör denna kod i en applet så fungerar det inte så bra :(

Här är koden som du "ska" använda

text=text.replaceAll("\\:\\)","<img src=\"kalle.img\");

Denna kod kommer att byta ut alla ":)" mot "<img src="kalle.img">. Titta här för mer inte, JavaDoc, eller http://www.webforum.nu/showthread.php?s=&threadid=52270.

/Viktor

AGMedlem sedan mars 20001 229 inlägg
#3

Japp

Pattern p = Pattern.compile(":)");
Matcher m = p.matcher(input);
input = m.replaceAll("<img src=happy.gif>");

Är som Viktors kod, fastanvänder regualar expression istället.

Andreas

ViktorMedlem sedan aug. 20021 710 inlägg
#4

Det gör min med fast inbyggt i string klassen :)
Du måste escapa : och ) för att det ska fungera också, annars tror Java att det är kontrolltecken för RegExp.

/Viktor

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb