2013-11-23 46 views
0

我使用indexof()來查找特定字符的長度,然後用不同的顏色對其進行着色。我可以使用indexof()這個字符開始着色,這很好,但是我不能結束這個單詞。現在Android獲取最接近的字符或單詞結尾

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

    SpannableString WordtoSpan = new SpannableString(title);   
    WordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), title.indexOf("x"), title.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

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

如果它包含的字符x它會與紅色從中可以找到的第一個x。但它不會結束,直到我不喜歡的字符串的最後一個。

我希望它以以x開頭的單詞的末尾結束。

ex。現在:((粗體是紅色atm的顏色)

我愛x人和巧克力。

我要的是:

我愛X人和巧克力。

我該如何做到這一點?

回答

1

你必須找到單詞結束的地方,而不是簡單地通過length();

考慮一個更強大的算法來找出單詞分隔符(即包括選項卡),在本例中,我只是找到第一個空格

String s = "I love x-man and chocolate."; 

    int idx = s.indexOf("x"); 

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

正是我一直在尋找,謝謝。 –

+0

如果您滿意,請考慮接受答案 – dafi

相關問題