0

确定一个字符串是否有 ^ 和 number 示例: ^我喜欢 Android2 我只想在字符串结尾有 ^ 和一个数字并且我想得到没有 ^ 和 number 的词时才在变量中获取单词, (它可能有:“^I love2 ^Android3 so much”)<-- “I love” = coloured ,“Android” = coloured and “so much” = 普通文本。那么如果这个数字在 0-9 之间,我必须为这个数字分配一个颜色。最后我想在 TextView 中用颜色显示字符串,我想我必须使用 HTML 格式;)

我的正则表达式是:

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

如果你有一个想法吹捧分配颜色请给我打电话:) 但不起作用:有人可以帮助我吗?:) 对不起我的英语不好

4

2 回答 2

0

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

于 2013-08-29T09:35:19.097 回答
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(single digit) 不会代表android.graphics.Color定义的常量。在提供的字符串中说 1 表示 RED 和 9 表示 BLUE,然后将以下内容添加到if(true)块:

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

我不知道如何为文本的一部分分配颜色。我希望,你能发现。

于 2013-08-29T09:49:17.940 回答