webForumDet fria alternativet

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

Java

3 svar · 260 visningar · startad av jme

Medlem sedan maj 20012 237 inlägg
Frågan#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!

Medlem sedan aug. 20021 752 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

Medlem sedan mars 20001 266 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

Medlem sedan aug. 20021 752 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

270 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)
137 ms — ändringar (db)