论坛首页 Java企业应用论坛

HTML转纯文本,求吐槽

浏览 3415 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-08-14  
首先吐槽一下iteye的问卷。
然后,闲的蛋疼做了一个HTML转纯文本的小工具类。
当然功能上只保留了一些最简单的例如<br>,<p>,<div>把它们转换成\n。


package com.yyt.core.utils.net.ubb;

import java.util.regex.Pattern;

public class HTMLUtils {

	private static final Pattern HTML_CHECKER = Pattern
			.compile("</[a-z][^>]*>|<[a-z][^/>]*/>");

	public static String toText(String html) {

		if (html == null)
			return null;

		boolean is = isHtml(html);

		if (is) {
			html = html
					.replaceAll("\r?\n", "")
					.replaceAll(
							"<[sS][tT][yY][lL][eE] [^>]+>[\\d\\D]+?</[sS][tT][yY][lL][eE]>",
							"")
					.replaceAll(
							"<[sS][tT][yY][lL][eE]>[\\d\\D]+?</[sS][tT][yY][lL][eE]>",
							"")
					.replaceAll(
							"<[sS][cC][rR][iI][pP][tT] [^>]+>[\\d\\D]+?</[sS][cC][rR][iI][pP][tT]>",
							"")
					.replaceAll(
							"<[sS][cC][rR][iI][pP][tT]>[\\d\\D]+?</[sS][cC][rR][iI][pP][tT]>",
							"")
					.replaceAll(
							"<[tT][aA][bB][lL][eE] [^>]+>[\\d\\D]+?</[tT][aA][bB][lL][eE]>",
							"")
					.replaceAll(
							"<[tT][aA][bB][lL][eE]>[\\d\\D]+?</[tT][aA][bB][lL][eE]>",
							"")
					.replaceAll("\n*(<(?!\\s)[^>\n]+>)\n*", "$1")
					.replaceAll(
							"(</?[bB][rR]\\s*+/?[^>]*+>|</?[pP][^>]*+>|</[dD][iI][vV][^>]*+>|</[lL][iI][^>]*+>)\\s*+",
							"\n");
		}

		return html = html.replaceAll("</?(?!\\s)[a-zA-Z][^>]*>", "")
				.replaceAll("<!--[\\d\\D]*?-->", "").replaceAll("\n{2,}", "\n");

	}

	public static boolean isHtml(String html) {
		return HTML_CHECKER.matcher(html).find();
	}
}


啊咧,有没有发错版块呢?
   发表时间:2012-08-15  
亲,有个神器叫nekohtml不知道你听过没听过,用来将html转为纯文本,xml转为纯文本实在是方便得一腿啊,开始我也想着像老兄你这样写些正则处理下,无奈html的特殊情况太多啊,所有最后放弃了,自从我遇到了这个神器,我顿时有种绝处逢生的感觉,这种感觉实在是太美妙啦,吼吼吼...
0 请登录后投票
   发表时间:2012-08-15  
楼上吐的一口好槽。。
不是我不想用那种啥jsoup、nekohtml流的。
只是我这边的需求比较单一罢了。
0 请登录后投票
   发表时间:2012-08-16  
jsoup三句就可以实现
0 请登录后投票
   发表时间:2012-08-16  
有现成的完备方案不用。。。

我是来看2楼头像的。膜拜。。。
开发中要是有一把就好了。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics