2013-10-22 6 views
0

안드로이드의 ListView에서 TextView를 강조 표시해야합니다. at CommonsWare response here .setText (Html.fromHtml (htmlString)) 메서드를 사용하기로했습니다. 내 어댑터에는 .대소 문자를 구분하지 않고 대소 문자를 구별하여 교체하십시오.

1)이 작동하지 않는 것 :이은 formatString() 메소드

나는이 문제를 얻었다.

2) fullString이 모두 UpperCase, 모든 LowerCase 또는 단어의 첫 번째 문자로 대문자를 사용할 수 있기 때문에 2) 작동하더라도 제한적입니다.

textToHighlight는 fullString의 단어 시작 부분에만 있습니다.

private String formatString(String textToHighlight, String fullString) { 
     if (textToHighlight== null || textToHighlight.equals("")) { 
      return fullString; 
     } 
     String colore = "\"#0099CC\""; 

     String htmlSubString = "<font color=" + colore + ">" 
       + textToHighlight+ "!</font>"; 

     fullString.replace(textToHighlight, htmlString); 

     return fullString; 
    } 

출력해야한다 : 당신이 그것을 사용하려는 경우

a) formatString("ca", "Cake Maccaroni") = "<font color=\"#0099CC\">Ca</font>ke Maccaroni" 
b) formatString("ca", "CAKE MACCARONI") = "<font color=\"#0099CC\">CA</font>KE MACCARONI" 
c) formatString("ca", "Maccaroni Cake") = "Maccaroni <font color=\"#0099CC\">Ca</font>ke" 
d) formatString("ca", "MACCARONI CAKE") = "MACCARONI <font color=\"#0099CC\">CA</font>KE" 
e) formatString("ca", "cake maccaroni") = "<font color=\"#0099CC\">ca</font>ke maccaroni" 
+0

질문 2는 http://stackoverflow.com/questions/8753163/how-can-i-perform-case-insensitive-pattern-search-and-case-preserving-placacemen의 가능한 복제물입니다. – ajb

+0

맞아요. , 그것은 작동한다, 전에 그것을 발견 할 수 있었다. 새로운 답변으로 답변을 제공하고 질문을 수정하거나 종료해야합니까? –

+0

우리는 더 말할 필요가 없다고 생각합니다. – ajb

답변

1

당신은, 값으로 fullString.replace(textToHighlight, htmlString); 방법의 결과를 할당해야합니다. return fullString.replace(textToHighlight, htmlString);은 첫 번째 문제를 해결해야합니다.

+0

해결 된 문제 1. 감사. –

1

String 개체는 변경할 수 없습니다. 즉, 초기화 된 객체의 내용을 변경할 방법이 없다는 의미입니다.

replace() 메서드는 사용자가 호출하는 String 개체를 변경하지 않습니다. 대신, 원하는 대체물을 사용하여 새 String 객체를 반환합니다.

replace() 메서드의 반환 값을 사용하여 아무 것도 수행하지 않으므로 코드가 아무런 효과가 없습니다. 당신은 원래의 문자열을 반환하고 있습니다. replace() 방법의 결과를 반환하도록 코드를 변경합니다

return fullString.replace(textToHighlight, htmlString); 

이 다른 문제를 해결하기 위해, 당신은 당신의 방법은 더 정교하게해야합니다. replace() 대신 replaceFirst()을 사용하면 정규 표현식을 첫 번째 인수로 사용합니다 (일반 문자열 대신). textToHighlight 및 요구 사항에서 신중하게 정규 표현식을 작성해야합니다.

관련 문제