2013-08-29 37 views
0

確定字符串是否具有^和數字 示例:^我喜歡Android2 而且我只想在字符串中有^和一個數字,我喜歡得到沒有^和數字的單詞,(它可能有:「^ I love2^Android3這麼多」)< - 「我愛」=彩色,「Android」=彩色和「太多」=正常文本。那麼如果木材在0-9之間,我必須爲這個數字指定一個顏色。 finaly我想表明與顏色的TextView字符串,我想我必須使用HTML格式)正則表達式模式+提取的顏色字

我的正則表達式是:

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

,如果你有一個想法兜售指定顏色請電話我:) 但沒有工作:s 有人可以幫助我嗎? :)和m'y英語不好

回答

0

^爲正則表達式中有特殊的含義(字符串的開始)對不起,讓你不得不逃避它:\\^

+0

謝謝我這樣做:(「^(\\ ^。*):(\\ d +)$」);你知道如何在TextView中返回結果嗎? @ M42 – Clyx

+0

@ user2721721:不,對不起,我不太瞭解java。 – Toto

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(單位)將不表示由android.graphics.Color定義的常量。說1是指紅色,9個平均BLUE所提供的字符串中,然後加入到如果(真)塊以下幾點:

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

我已經就如何分配顏色到文本的一部分不知道。我希望你能找到答案。

+0

好的,謝謝我想嘗試,但我不知道如何顯示文本,而不使用「system.out.println」?用TextView有可能嗎? @blackSmith – Clyx

+0

偉大的我測試和它的工作,但你能解釋Integer.parse(n)? @BlackSmith – Clyx

+0

我的意思是你可以使用整數值的某種方法的類型text.setColor(int)。如果您指出您正在使用的課程來顯示文本,我可能會更新答案 – blackSmith