如果这些部分不是有效的HTML标记,我想替换String中所有看起来像标记的部分。
标记部分是<>
括号中的内容。例如。必须保留<myemail@email.com>
或<hello>
,但必须保留<br>
,<div>
等。
你知道如何实现这个目标吗?
感谢任何帮助!
欢呼声,
巴拉兹
答案 0 :(得分:8)
您可以使用JSoup清除HTML。
String cleaned = Jsoup.clean(html, Whitelist.relaxed());
您可以使用其中一个已定义的Whitelists,也可以创建自己的自定义属性,在其中指定希望通过清理器允许的HTML元素。其他一切都被删除了。
您的具体示例如下:
String html = "one two three <blabla> four <text> five <div class=\"bold\">six</div>";
String cleaned = Jsoup.clean(html, Whitelist.relaxed().addAttributes("div", "class"));
System.out.println(cleaned);
输出:
one two three four five
<div class="bold">
six
</div>
答案 1 :(得分:0)
查看java.util.Scanner类 - 您可以设置分隔符,然后查看字符串是否与HTML标记匹配 - 您必须构建一个应忽略的字符串数组。
答案 2 :(得分:0)
您可能还希望在比较算法中包含结束标记。因此,您可能需要查找正斜杠(html结束标记)并在比较之前将其删除。
答案 3 :(得分:0)
如果您这样做是为了在网页上显示不受信任的数据,那么简单地删除无效标签是不够的。看看OWASP AntiSamy。