RegEx Pattern +提取的颜色词

时间:2013-08-29 09:31:30

标签: java android regex string colors

确定字符串是否包含^和数字 示例:^我喜欢Android2 我想在变量中得到单词,只要字符串在末尾有^和数字,我想得到没有^和数字的单词,(它可能有:“^我爱2 ^ Android3这么多“)< - ”我爱“=有色,”Android“=有色,”太多“=正常文字。那么如果mumber在0-9之间,我必须为这个数字指定一个颜色。最后我想在TextView中用颜色显示字符串,我想我必须使用HTML格式;)

我的正则表达式是:

 Pattern p = Pattern.compile("^(.*):(\\d+)$");          

如果您有想法指定颜色,请给我打电话:) 但是不起作用:s 有人能帮我吗 ? :)对不起英语不好的英语

2 个答案:

答案 0 :(得分:0)

^作为正则表达式(字符串的开头)中的特殊含义,因此您必须将其转义:\\^

答案 1 :(得分:0)

您可以使用以下正则表达式:

  (?<=\\^)([^0-9]+)

可以使用以下方法提取普通文本:

  ([^^0-9]+$)

颜色分配可以通过以下方式完成:

    Matcher mat = Pattern.compile("(?<=\\^)([^0-9]+[0-9]+)|([^^0-9]+$)")
                                   .matcher("^I love2 ^Android322 so much");

    while(matcher.find()){
        String match = matcher.group();
        String n= match.replaceFirst("^[^0-9]+", "");
        if(n.length()==1) {
            System.out.println(match.replaceFirst("[0-9]+$", "")+"=color_"+n);
        } else {
            System.out.println(match.replaceFirst("[0-9]+$", "")+"=normalText");
        }
    }       

但是,对于实际的颜色分配,n(单个数字)不代表android.graphics.Color定义的常量。在提供的字符串中说1表示RED,9表示蓝色,然后添加到 if(true)阻止以下内容:

 int color = Integer.parseInt(n) 
 switch(color){
     case 1 : color = 0xffff0000; break;
     case 9 : color = 0xff0000ff; break;
 }
 textview.setColor(color);

我不知道如何为部分文字指定颜色。我希望你能找到答案。