我想替換字符串中所有標記外觀的部分(如果這些部分不是有效的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