2012-05-04 165 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的现在有文本“以前后”。

相关问题