2014-01-22 2 views
0

내가 다음 bbcodes있어 <img src ...http// />안드로이드 자바 정규식 교체 반복 패턴은

로 변환하지만, 수 [369]을 말을 한 도시는

[369] [369] [369] [369] 

처럼 여러 항목을 교체에 올 때, 그것은 다음과 같이 바뀐 문자열 1,2,3,4 토큰 (총 10 자)으로 바뀝니다.

<img src ...http// /> <img src ...http// /><img src ...http// /> <img src ...http// /><img src ...http// /><img src ...http// /> <img src ...http// /><img src ...http// /><img src ...http// /><img src ...http// /> 

입력

班仔比人陰返轉頭[369] [369] [369] <br/>BTW大家入黎咩都傾下,我地好warm的#yup# #yup# #yup# 

내가 문자열 교체를 구현하고 원하는 출력 제공하고자 :

班仔比人陰返轉頭<img src ...http// /> <img src ...http// /><img src ...http// /> <br/>BTW大家入黎咩都傾下,我地好warm的<img src ...http// /><img src ...http// /><img src ...http// /> 

을하지만 실행에 관해서 .. 실제 출력 :

班仔比人陰返轉頭<img src ...http// />  <img src ...http// /><img src ...http// /> 
    <img src ...http// /><img src ...http// /><img src ...http// /> <br/>BTW大家入黎咩都傾下,我地好warm的<img src ...http// />  <img src ...http// /><img src ...http// /> 
    <img src ...http// /><img src ...http// /><img src ...http// /> 

반복되는 교체가 발생하는 동안 루프가 있는지 확인해 주시겠습니까?

public String replace(String text , String bbcode , String imageLocation){ 
    return text.replaceAll(Pattern.quote(bbcode), "<img src=\"" + imageLocation + "\" />"); 
} 

는 희망이 도움이 : 나는 당신을 이해한다면 당신은 간단하게 할 수 있도록, 당신은 모든 패턴이 문자열로 발생 회수 교체해야

public String replace(String text , String bbcode , String imageLocation){ 


      StringBuffer imageBuffer = new StringBuffer (""); 
      Pattern pattern = Pattern.compile(Pattern.quote(bbcode)); 
      Matcher matcher = pattern.matcher(text); 

      StringBuilder builder = new StringBuilder(); 
      int i = 0; 
      while (matcher.find()) { 


       imageBuffer.append("<img src=\"" + imageLocation + "\" />"); 
       String replacement = imageBuffer.toString(); 
       builder.append(text.substring(i, matcher.start())); 

       if (replacement == null) { 
        builder.append(matcher.group(0)); 
        break; 
       } else { 
        builder.append(replacement); 
       } 

       i = matcher.end(); 
      } 

      builder.append(text.substring(i, text.length())); 
      return builder.toString(); 
     } 
+0

'bbcode'의 정확한 값은 무엇입니까? – njzk2

+0

작동 코드 샘플없이 질문에 대답하는 것은 어려울 것입니다. 문제를 나타내는 [SSCCE] (http://www.sscce.org)로 코드를 게시하십시오. –

+0

njzkj : [268], [459], 포럼 용 이미지 아이콘으로 변환하기위한 코드 –

답변

1

:

은 아래에있는 내 코드입니다.

+0

고맙습니다. 이것은 KISS 원칙의 좋은 예입니다. –