由于查询远程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