我想替换字符串中所有标记外观的部分(如果这些部分不是有效的HTML标记)。 标签外观部分是在<>
括号内所包含的内容。例如。 <[email protected]>
或<hello>
但是<br>
,<div>
等等必须被保留。Java替换字符串中的所有非HTML标记
你有什么想法如何做到这一点?
任何帮助表示赞赏!
欢呼声,
巴拉兹
我想替换字符串中所有标记外观的部分(如果这些部分不是有效的HTML标记)。 标签外观部分是在<>
括号内所包含的内容。例如。 <[email protected]>
或<hello>
但是<br>
,<div>
等等必须被保留。Java替换字符串中的所有非HTML标记
你有什么想法如何做到这一点?
任何帮助表示赞赏!
欢呼声,
巴拉兹
您可以使用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>
有一个看看java.util.Scanner中的类 - 你可以设置然后分隔符是否匹配字符串的HTML标记或不 - 你将不得不创建一个Array应该忽略的字符串。
我不想自己创建数组,我宁愿寻找一个已经存在的Enum,类似于http://download.oracle.com/javase/1.4.2/docs/api/javax/swing/text/ html/HTML.Tag.html – 2011-01-14 13:54:57
类似于这篇文章然后 - > http://stackoverflow.com/questions/240546/removing-html-from-a-java-string – ManseUK 2011-01-14 14:01:05
您可能还想在比较算法中加入结束标签。所以你可能想要寻找一个正斜杠(html结束标记)并在比较之前将其去掉。
如果您为了在网页上显示不可信数据而执行此操作,只需简单地删除无效标签是不够的。看看OWASP AntiSamy。
替换或删除?请显示预期的输出。 – dogbane 2011-01-14 13:49:46
“one two three four five six ”to“one two three four five six ” - 因此替换为空字符串。 –
2011-01-14 13:58:07