Android通过字符串为特定字母进行iritiate

时间:2013-11-24 18:31:08

标签: android

我有一个字符串,我可以检测其中是否有#

    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

2 个答案:

答案 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
}