由於查詢遠程XML提要,我得到一個HTML字符串。我使用結果將文本設置爲TextView
。問題是一個字符串包含TextView
元素不支持的HTML註釋標記。通過第一個和最後一個字符刪除一部分字符串?
現在,我需要一種方法來刪除(子串)結果字符串,指出將被刪除的部分。我無法通過開始和結束位置工作,但我必須使用開始和結束字符串模式(起始爲<!--
,結束爲-->
)。
我該怎麼做?
由於查詢遠程XML提要,我得到一個HTML字符串。我使用結果將文本設置爲TextView
。問題是一個字符串包含TextView
元素不支持的HTML註釋標記。通過第一個和最後一個字符刪除一部分字符串?
現在,我需要一種方法來刪除(子串)結果字符串,指出將被刪除的部分。我無法通過開始和結束位置工作,但我必須使用開始和結束字符串模式(起始爲<!--
,結束爲-->
)。
我該怎麼做?
您可以使用正則快遞,例如
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);
也許用這個:
String str = "your html string";
int start = str.indexOf("<!--");
int end = str.indexOf("-->");
str = str.replace(str.substring(start, (end - start)), "");
更好地使用'int end = str.lastIndexOf(「 - >」);' –
nope,我不認爲。因爲你永遠不知道html內是否有一些註釋。 – waqaslam
@Waqas我指出,因爲我認爲可以嵌套評論[,但我看到它在合法的HTML中是不合法的](http://stackoverflow.com/questions/442786/are-nested-html-comments-possible) 。而且我並沒有想過打開一條評論,關閉它並調整(並關閉)另一條評論。 –
您還可以使用HTML.fromHTML
我不行!這就是我發佈這個問題的原因 – sandalone
如果是這樣,請使用正則表達式。閱讀正則表達式食譜http://www.amazon.com/Regular-Expressions-Cookbook-Jan-Goyvaerts/dp/0596520689/ref=sr_1_1?ie=UTF8&qid=1336121466&sr=8-1 –
我發現這個在這裏。我相信因爲android是標籤,所以答案是相關的。
android.text.Html.fromHtml(instruction).toString()
可以使用Html.fromHtml()
方法使用HTML格式的文本在TextView
,例如:
CharSequence text = Html.fromHtml("before <!--comment--><b>after</b>");
myTextView.setText(text);
TextView的現在有文本「以前後」。
使用正則表達式 – DaTroop
發佈您的代碼,它可能有助於解決您的問題 – Aerrow
只有在一些特殊情況下,他們是正確的工具上的HTML/XML使用的正則表達式時,雖然,(@DaUltimateTrooper照顧,雖然這可能是一)。通常你應該使用HTML/XML解析器。 – dtech