2012-05-04 207 views
0

由於查詢遠程XML提要,我得到一個HTML字符串。我使用結果將文本設置爲TextView。問題是一個字符串包含TextView元素不支持的HTML註釋標記。通過第一個和最後一個字符刪除一部分字符串?

現在,我需要一種方法來刪除(子串)結果字符串,指出將被刪除的部分。我無法通過開始和結束位置工作,但我必須使用開始和結束字符串模式(起始爲<!--,結束爲-->)。

我該怎麼做?

+1

使用正則表達式 – DaTroop

+2

發佈您的代碼,它可能有助於解決您的問題 – Aerrow

+1

只有在一些特殊情況下,他們是正確的工具上的HTML/XML使用的正則表達式時,雖然,(@DaUltimateTrooper照顧,雖然這可能是一)。通常你應該使用HTML/XML解析器。 – dtech

回答

1

您可以使用正則快遞,例如

String input = "<!-- \nto be removed -->hello <!-- to be removed-->world"; 
    Pattern pattern = Pattern.compile("<!--.*?-->", Pattern.DOTALL | Pattern.UNICODE_CASE | Pattern.MULTILINE); 
    Matcher matcher = pattern.matcher(input); 
    StringBuilder builder = new StringBuilder(); 
    int lastIndex = 0; 
    while (matcher.find()) { 
     builder.append(input.substring(lastIndex, matcher.start())); 
     lastIndex = matcher.end(); 
    } 
    builder.append(input.substring(lastIndex)); 
    System.out.println(builder); 
1

也許用這個:

String str = "your html string"; 
int start = str.indexOf("<!--"); 
int end = str.indexOf("-->"); 
str = str.replace(str.substring(start, (end - start)), ""); 
+0

更好地使用'int end = str.lastIndexOf(「 - >」);' –

+2

nope,我不認爲。因爲你永遠不知道html內是否有一些註釋。 – waqaslam

+0

@Waqas我指出,因爲我認爲可以嵌套評論[,但我看到它在合法的HTML中是不合法的](http://stackoverflow.com/questions/442786/are-nested-html-comments-possible) 。而且我並沒有想過打開一條評論,關閉它並調整(並關閉)另一條評論。 –

0

您還可以使用HTML.fromHTML

+0

我不行!這就是我發佈這個問題的原因 – sandalone

+0

如果是這樣,請使用正則表達式。閱讀正則表達式食譜http://www.amazon.com/Regular-Expressions-Cookbook-Jan-Goyvaerts/dp/0596520689/ref=sr_1_1?ie=UTF8&qid=1336121466&sr=8-1 –

1

我發現這個在這裏。我相信因爲android是標籤,所以答案是相關的。

android.text.Html.fromHtml(instruction).toString() 

Remove HTML tags from a String

+1

+1在我之前張貼。不過你並不需要'toString()'。 – Jave

+0

我剛剛從它下面的鏈接複製了答案;)。我想這是爲了清楚起見以防萬一! – Thihara

+0

謝謝你的提示。但我不想刪除HTML。只是評論標籤 – sandalone

0

可以使用Html.fromHtml()方法使用HTML格式的文本在TextView,例如:

CharSequence text = Html.fromHtml("before <!--comment--><b>after</b>"); 
myTextView.setText(text); 

TextView的現在有文本「以前後」。

相關問題