![](/img/trans.png)
[英]Using JSoup to remove only HTML tags and not data within '<' and '>' tags
[英]remove html tags with using StringTokenizer
這是我的字符串:
String str = "<pre><font size="5"><strong><u>LVI . The Day of Battle</u></strong></font>
<font
size="4"><strong>";
我想使用StringTokenizer
刪除字符串中的所有html標簽。 但是我不明白如何在這種情況下使用StringTokenizer。 因為當我使用str.replaceAll("\\\\<.*?>","")
,刪除所有標簽效率不高,因為某些標簽將位於字符串的下一行,如上面的字符串所示。 但是我想在<
和>
之間的所有情況下都這樣做。 我該怎么做? (我想使用StringTokenizer
實現它)。 謝謝..
通常,除了HTML解析庫之外,您不應使用其他任何內容解析HTML。 編寫您自己的解析器會帶來安全風險,並使您的應用程序容易受到攻擊的威脅,例如跨站點腳本和各種其他錯誤。 再說一遍:不要使用正則表達式或簡單的標記器來解析HTML。 如果您只有一小部分已知的HTML數據輸入,並且僅將代碼用於該數據,則可能是該規則的例外。 在這種情況下,您可以並且應該驗證您的代碼對每個輸入所做的正確操作。
也就是說,您原來的正則表達式非常接近。 點通配符匹配除換行符之外的所有內容,因此,如果我們向您的正則表達式中添加除點通配符之外還包含換行符的可能性,我們將在測試字符串上獲得肯定的結果。
String result = str.replaceAll("<(.|\r|\n|\f)*?>","");
請勿在未知輸入上使用此代碼! 請勿在生產中使用它! 它不是解析HTML的安全或正確方法。
最好使用HTML解析器庫而不是StringTokenizer。 請看下面的演示:
隨心所欲地播放HTML。 下面的示例是將HTML內容轉換為文本格式的代碼:
導入org.jsoup.Jsoup;
公共類HtmlParser {
public static String removeAllHtml(String htmlContent) { return Jsoup.parse(htmlContent).text(); } public static void main(String[] args) { String htmlContent = "<pre><font size=\\"5\\"><strong><u>LVI . The Day of Battle</u></strong></font><fontsize=\\"4\\"><strong>"; System.out.println(removeAllHtml(htmlContent)); }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.