2013-11-24 3 views
0

문자열이 있는데 그 안에 #이 있는지 검색 할 수 있습니다. 문자열이 #이있는 경우안드로이드는 특정 문자에 대해 문자열을 사용합니다.

if(title.contains("#")){ 

     SpannableString WordtoSpan = new SpannableString(title); 

     int idx = title.indexOf("#"); 
     if (idx >= 0) { 
      int wordEnd = title.indexOf(" ", idx); 
      if (wordEnd < 0) { 
       wordEnd = title.length(); 
      } 
      WordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 
         idx, 
         wordEnd, 
         Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     }   

     holder.txtTitle.setText(WordtoSpan); 
    } else { 
     holder.txtTitle.setText(title); 
    } 

그래서 지금은 빨간색과 그 이후의 단어의 끝까지를 착색합니다. 이것은 완벽하게 작동합니다. 문자열이 하나 이상의 # 그것은 단지 그것으로 처음 # 단어, 또는 다음 등 세 번째없는 색상 것입니다 ..

전이있는 경우 그러나 문제이다. 지금 : 그들이 #delicious있는 사촌

빨간색 만 햄버거 공지 사항이 병 색상이 나는 닭 에게 #burger을 사랑 해요.

나는 원하는 : 공지 사항 햄버거를 귀찮게하고 맛있는은 색상이 지정됩니다. 그들이 #delicious입니다 사촌

나는, 닭고기 에게 #burger을 사랑 해요.

답변

1

#을 포함하는 문자열 배열을 얻으려면 title.split ("#")을 사용하십시오. 같은

뭔가 :

String parts = title.split("#"); 
for(int i = 0; i<parts.length(); i++){ 
    //TODO: do something with the string part 
    //parts[i], this is a part of the string. 
} 
+0

그래도 그걸 훑어 봤지만 나에게 코드를 실행시키는 방법을 알지 못했습니다. 더 설명해 줄 수 있니? –

1

당신은 찾아 주어진 문자열의 해시 태그를 포함하는 단어와 일치하기 위해 패턴을 사용할 수 있습니다.

String text = "I love chicken #burger, because they are #delicious!"; 

Pattern HASHTAG_PATTERN = Pattern.compile("#(\\w+|\\W+)"); 
Matcher mat = HASHTAG_PATTERN.matcher(text); 

while (mat.find()) { 
    String tag = mat.group(0); 

    //String tag will contain the hashtag 
    //do operations with the hashtag 
} 
관련 문제