2014-10-16 25 views
0

我正在寫一個Android應用程序,它使用正則表達式解析字符串。比方說,它得到從正則表達式在Android中製作對象

'Tis an example image of a beaver {[beaver.jpg]} having an afternoon tea. 

而我想要得到的是與TextView的'Tis an example image of a beaver,ImageView的beaver.jpg和其他的TextView having an afternoon tea.

如何(如果可能的話)在讀取這樣的字符串並用正則表達式解析之後創建對象?

+0

它會一直是[文本] [圖像] [文本]在一個圖像和兩個文本塊,或將有多個圖像嵌入文本? – ChrisStillwell 2014-10-16 21:08:29

+0

以上都不是。我將使用將擴展View的自定義類,並且不會規定如何安排它們。 – 2014-10-16 21:09:56

+0

圖像路徑是否總是被包含在一個'{[]}'內,並且它會一直是'.jpg'? – drewmoore 2014-10-16 21:15:58

回答

1

您的自定義視圖類應該有一個構造函數,它需要三個String參數,一個用於圖像的路徑,一個用於在圖像之前顯示文本,一個用於之後顯示的文本。

class YourView { 
    public YourView(String imgPath, String beforeImg, String afterImg){ 
     //add TextView for text before image 
     //add ImageView for image 
     //add TextView for text after image 
    } 
} 

如果你的形象將永遠在{[ ]}包圍,正則表達式(.+)\\{\\[(.+)\\]\\}(.+)將捕獲在第1組捕捉{[}](即圖像路徑)之間的組0,一切{[之前的一切,一切後, }]組2

如果您使用Java Matcher然後,您可以實現像你期望的結果:

String pre, path, post; 
    while (matcher.find()){ 
     pre = matcher.group(0); 
     path = matcher.group(1); 
     post = matcher.group(2); 
     YourView view = new YourView(path, pre, post); 
     //add view 
    } 

請注意,如果圖像位於文本的末尾或開頭,則只需傳遞空字符串作爲第三個/第一個參數,這將導致創建空的TextView,這應該是無害的(或者您可以做一個檢查,而不是爲空字符串創建一個)。

這就是說,還要注意上面的代碼沒有經過測試(但應該給你一般的想法),並且我是一個在Android上很少經驗的Java程序員 - 所以讓我知道是否有一個Android特定的原因將無法工作

+0

謝謝,但它不會像文本/圖像/文本一樣簡單,但更復雜,並不總是相同。有時只是一個文本,有時標題/粗體文本/文本/斜體/標題/文本。我不想使用WebView,但我認爲這將是最好的方式。 – 2014-10-16 21:34:11