【问题标题】:RegEx Pattern + color word extractedRegEx Pattern + 颜色词提取
【发布时间】:2013-08-29 09:31:29
【问题描述】:

判断一个字符串是否有 ^ 和 number 示例:^我爱 Android2 我只想在字符串末尾有 ^ 和一个数字的情况下在变量中获取单词,并且我想得到没有 ^ 和 number 的单词,(它可能有:“^I love2 ^Android3 so much ")

我的正则表达式是:

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

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

【问题讨论】:

    标签: java android regex string colors


    【解决方案1】:

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

    【讨论】:

    • 谢谢我这样做了:("^(\\^.*):(\\d+)$");你知道如何在 TextView 中返回结果吗? @M42
    • @user2721721:不,抱歉我不太懂java。
    【解决方案2】:

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

      (?<=\\^)([^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 表示 BLUE,然后将以下内容添加到 if(true) 块中:

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

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

    【讨论】:

    • 好的,谢谢,我想试试,但我不知道如何在不使用“system.out.println”的情况下显示文本?使用 TextView 有可能吗? @blackSmith
    • 很好,我测试过,它可以工作,但你能解释一下 Integer.parse(n) 吗? @布莱克史密斯
    • 我的意思是您可以将整数值用于某些 text.setColor(int) 类型的方法。如果您指出您用于显示文本的类,我可能会更新答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-02
    • 1970-01-01
    • 2013-05-24
    • 2019-01-02
    • 2020-10-07
    • 2020-09-27
    • 1970-01-01
    相关资源
    最近更新 更多