我有一个字符串,我可以检测其中是否有#
。
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);
}
现在,如果字符串有一个#
,它会将颜色加到它后面的单词的末尾用红色。这非常有效。 但问题是,当一个字符串有多个#
时,它会只用它的第一个#
颜色,而不是下一个或第三个等颜色。
前现在: 注意它是带有红色的颜色只有汉堡
我爱鸡 #burger ,因为他们是#delicious。
我想要:注意打扰汉堡和美味的颜色。
我爱鸡 #burger ,因为他们 #delicious 。
答案 0 :(得分: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.
}
答案 1 :(得分: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
}