//Method for Strip HTML
public static String stripHtml(String inStr) {
boolean inTag = false;
char c;
StringBuffer outStr = new StringBuffer();
int len = inStr.length();
for (int i = 0; i < len; i++) {
c = inStr.charAt(i);
if (c == '<') {
inTag = true;
}
if (!inTag) {
outStr.append(c);
}
if (c == '>') {
inTag = false;
}
}
//Print to show that the this method is removing the necessary characters
System.out.println(outStr);
return outStr.toString();
}
因此,我需要清理所有包含〈〉的输出以及它们之间的所有内容,并且它仍然应该打印出剩余的字符。
input:app<html>le
expected:apple
但是如果它只找到“〈”或“〉,”它也应该删除,但我的方法没有这样做。
input:app<le
output:app<le
expected:apple
请让我知道要修什么。
3条答案
按热度按时间ybzsozfc1#
尝试使用HTML解析器(如JSoup或TagSoup)来解析HTML。一旦有了DOM,就在根元素上调用
getTextContent()
。从API文档(Java的各个版本都不一样):* 此属性返回此节点及其后代的文本内容。[...]不执行序列化,返回的字符串不包含任何标记。*
另请参阅
wsewodh22#
正如有人所说,它与Jsoup配合得很好。
输出:
但是您给出的示例不是一个正确的XML文档,不能使用XML解析器进行处理。
您也可以稍微修改程式。
和
输出:
hi3rlvi23#
您的要求是移除配对的
<...>
,而不是行程唯一的<
。这意味着代码在遇到
>
-时只能删除标记内字符您的程式码也可以使用
ìnt i2 = inStr.indexOf('>', i+1);
,在<
处寻找结尾的>
。然而更简单的是使用正则表达式替换:
这将搜索所有:
<
>
,0次或多次(*
)>