0

文字列に ^ と数字が含まれているかどうかを判断する(その可能性: "^I love2 ^Android3 so much")<-- "I love" = 色付き、"Android" = 色付き、"so much" = 通常のテキスト。次に、数値が 0 ~ 9 の場合、この数値に色を割り当てる必要があります。最後に、TextView で文字列を色付きで表示したいので、HTML 形式を使用する必要があると思います ;)

私の正規表現は次のとおりです。

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

色を割り当てるアイデアがある場合は、私に電話してください:)しかし、機能しません:s誰かが私を助けることができますか? :)そして私の悪い英語でごめんなさい

4

2 に答える 2

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(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);

テキストの一部に色を割り当てる方法がわかりません。私は、あなたが見つけることができることを願っています。

于 2013-08-29T09:49:17.940 に答える
0

^正規表現(文字列の開始)の特別な意味として、エスケープする必要があります:\\^

于 2013-08-29T09:35:19.097 に答える