我使用indexof()
来查找特定字符的长度,然后用不同的颜色给它上色。我可以使用indexof()
从字符开始着色,这很好,但我不能以单词结束。
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
开头的单词结尾。
例如现在:(粗体为红色atm)
我喜欢x男和巧克力
我想要的是:
我喜欢x-man和巧克力。
我该如何做到这一点?
您必须找到单词的结尾,而不是简单地传递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);
}