Java把Html格式文字轉換成純文字的問題
阿新 • • 發佈:2019-01-24
工作上需要把一段html內容轉換成純文字。
最簡單的辦法,是用正則表示式把全部的標籤替換成空字串,然後把被轉義的內容(尖括號,空格等)轉回來。這裡用到了StringEscapeUtils,來自Apache Commons Lang library (commons-lang3-3.0.1.jar)
str = str.replaceAll("\\<.*?\\>","");
str = StringEscapeUtils.unescapeHtml(str);
上面的方法有點兒簡單粗暴。
稍微高階點兒的做法,保留換行。程式碼如下:
public static String toPlainText(final String html) { if (html == null) { return ""; } final Document document = Jsoup.parse(html); final OutputSettings outputSettings = new Document.OutputSettings().prettyPrint(false); document.outputSettings(outputSettings); document.select("br").append("\\n"); document.select("p").prepend("\\n"); document.select("p").append("\\n"); final String newHtml = document.html().replaceAll("\\\\n", "\n"); final String plainText = Jsoup.clean(newHtml, "", Whitelist.none(), outputSettings); final String result = StringEscapeUtils.unescapeHtml(plainText.trim()); return result; }
這裡用到了開源html庫,從這裡下載。Jsoup