2012-03-24 39 views
0

我将笑脸插入字符串中。我以某种格式编码了表情符号,并且在显示组件中的字符串之前,我需要用HTML img标记替换所有出现的笑脸代码,以便它们显示为图像。因此,这里是我的表情图标的格式 -替换字符串中的笑脸代码

&:) ==> smile 

&:O ==> shocked 

&:(==> sad 

etc... 

所以说我有以下字符串 -

Did you hear the news &:O. I won a million dollars!! &:)

我需要找到,然后替换所有HTML笑脸代码像

<img src='file:C:/images/sad.png'/>

回答

2

定义这个地方:

static HashMap<String, String> smileys = new HashMap<String, String>(); 

然后用笑脸(字符串)和它们的HTML表示填充:

smileys.put("&:)", "<img src='file:C:/images/sad.png'/>"); 
smileys.put("&:O", "<img src='file:C:/images/sad.png'/>"); 
smileys.put("&:(", "<img src='file:C:/images/sad.png'/>"); 

更换表情被替换的每一次出现完成笑脸代码通过它的html表示,只是像这样循环hashmap:

public String replaceSmileys(String text){ 
    for(Entry<String, String> smiley : smileys.entrySet()) 
     text = text.replaceAll(smiley.getKey(), smiley.getValue()); 
    return text; 
} 
+0

干杯队友,比switch语句或if语句的加载更优雅。假设我在笑脸代码中的')'之前需要双反斜杠。 – csss 2012-03-24 14:26:26

4

你是最好的使用String.replaceAll(String what, String withWhat)每种类型的笑脸你ar Ë试图取代

+1

只记得用'\'来转义'('和')'这样的字符。 – GavinCattell 2012-03-24 14:12:18

+0

简短而相关! 我只是想指出,使用这种方法,你必须确保没有笑脸开始于另一个笑脸的结束,因为这可能会产生不良结果,当他们被解析。 – neXus 2012-03-24 14:12:58

+0

@亚历克斯:好吧,我要去这里 – csss 2012-03-24 14:17:30

4

我认为你最好使用String.replace而不是String.replaceAll,所以你不必处理转义的正则表达式模式......它只是一个字面替换。