1. 程式人生 > >Java把Html格式文字轉換成純文字的問題

Java把Html格式文字轉換成純文字的問題

工作上需要把一段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