2012-03-24 3 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

이 곳을 정의 대체하려고 스마일 코드를 HTML로 표현하면 다음과 같이 해시 맵을 반복하면됩니다.

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

4

당신은 모든 종류의 웃는 얼굴에 대해 String.replaceAll(String what, String withWhat)을 사용하는 것이 가장 좋습니다 다음

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

스마일 (문자열)과 HTML 표현으로 채우기 : (A)의 모든 발생을 대체하여 수행됩니다

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'/>"); 

교체 스마일 전자

+1

'('및 ')'와 같은 문자는 '\'로 이스케이프해야합니다. – GavinCattell

+0

짧고 관련성이 있습니다! 이 접근법을 사용하면 다른 스마일의 끝으로 스마일리가 시작되지 않도록주의해야합니다. 이는 파싱 될 때 바람직하지 않은 결과를 가져올 수 있기 때문입니다. – neXus

+0

@Alex : 알았어, 여기에 간다. – csss

4

String.replaceAll이 아닌 String.replace을 사용하는 것이 가장 좋을 것이라고 생각합니다. 따라서 정규 표현식 패턴을 이스케이프 처리 할 필요가 없습니다 ... 리터럴 대체를 수행합니다.

관련 문제