首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RegEx模式+颜色词提取

RegEx模式+颜色词提取
EN

Stack Overflow用户
提问于 2013-08-29 17:31:30
回答 2查看 316关注 0票数 0

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

代码语言:javascript
复制
 Pattern p = Pattern.compile("^(.*):(\\d+)$");          

如果你有分配颜色的想法,请告诉我:)但行不通:s有人能帮我吗?:)很抱歉我的英语不好

EN

回答 2

Stack Overflow用户

发布于 2013-08-29 17:35:19

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

票数 0
EN

Stack Overflow用户

发布于 2013-08-29 17:49:18

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

代码语言:javascript
复制
  (?<=\\^)([^0-9]+)

并且可以使用以下命令提取普通文本:

代码语言:javascript
复制
  ([^^0-9]+$)

颜色分配可以用如下代码来完成:

代码语言:javascript
复制
    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表示红色,9表示蓝色,然后在if(true)块中添加以下内容:

代码语言:javascript
复制
 int color = Integer.parseInt(n) 
 switch(color){
     case 1 : color = 0xffff0000; break;
     case 9 : color = 0xff0000ff; break;
 }
 textview.setColor(color);

我不知道如何给文本的一部分分配颜色。我希望,你能找到答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18507158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档