确定字符串是否有^和数字示例:^我喜欢Android2,只有当字符串末尾有^和数字时,我才想在变量中获取单词,并且我希望获得没有^和数字的单词,(可能有:"^I love2 ^Android3 so‘d“)<-- "I love2”= colored,"Android“= colored,"so love”=普通文本。然后,如果数字在0-9之间,我必须为这个数字分配一个颜色。最后,我想用颜色显示TextView格式的字符串,我想我必须使用HTML格式;)
Pattern p = Pattern.compile("^(.*):(\\d+)$"); 如果你有分配颜色的想法,请告诉我:)但行不通:s有人能帮我吗?:)很抱歉我的英语不好
发布于 2013-08-29 17:35:19
^作为正则表达式(字符串的开头)中的特殊含义,因此您必须对其进行转义:\\^
发布于 2013-08-29 17:49:18
您可以使用以下正则表达式:
(?<=\\^)([^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表示红色,9表示蓝色,然后在if(true)块中添加以下内容:
int color = Integer.parseInt(n)
switch(color){
case 1 : color = 0xffff0000; break;
case 9 : color = 0xff0000ff; break;
}
textview.setColor(color);我不知道如何给文本的一部分分配颜色。我希望,你能找到答案。
https://stackoverflow.com/questions/18507158
复制相似问题