次の正規表現を使用できます。
(?<=\\^)([^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(1 桁) は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);
テキストの一部に色を割り当てる方法がわかりません。私は、あなたが見つけることができることを願っています。