浏览 3415 次
锁定老帖子 主题:HTML转纯文本,求吐槽
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2012-08-14
然后,闲的蛋疼做了一个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(); } } 啊咧,有没有发错版块呢? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-08-15
亲,有个神器叫nekohtml不知道你听过没听过,用来将html转为纯文本,xml转为纯文本实在是方便得一腿啊,开始我也想着像老兄你这样写些正则处理下,无奈html的特殊情况太多啊,所有最后放弃了,自从我遇到了这个神器,我顿时有种绝处逢生的感觉,这种感觉实在是太美妙啦,吼吼吼...
|
|
返回顶楼 | |
发表时间:2012-08-15
楼上吐的一口好槽。。
不是我不想用那种啥jsoup、nekohtml流的。 只是我这边的需求比较单一罢了。 |
|
返回顶楼 | |
发表时间:2012-08-16
jsoup三句就可以实现
|
|
返回顶楼 | |
发表时间:2012-08-16
有现成的完备方案不用。。。
我是来看2楼头像的。膜拜。。。 开发中要是有一把就好了。 |
|
返回顶楼 | |