过滤HTML标签java工具类
废话不说,直接上码:
package test;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /** * <p> * Title: HTML相关的正则表达式工具类 * </p> * <p> * Description: 包括过滤HTML标记,转换HTML标记,替换特定HTML标记 * </p> * <p> * Copyright: Copyright (c) 2006 * </p> * * @author hejian * @version 1.0 * @createtime 2006-10-16 */ public class HtmlRegexpUtil { private final static String regxpForHtml = "<([^>]*)>"; // 过滤所有以<开头以>结尾的标签 private final static String regxpForImgTag = "<\\s*img\\s+([^>]*)\\s*>"; // 找出IMG标签 private final static String regxpForImaTagSrcAttrib = "src=\"([^\"]+)\""; // 找出IMG标签的SRC属性 /** * */ public HtmlRegexpUtil() { // TODO Auto-generated constructor stub System.out.println("IMG标签的正则表达式:"+regxpForImgTag);System.out.println("IMG标签的SRC属性的正则表达式:"+regxpForImaTagSrcAttrib);} /** * * 基本功能:替换标记以正常显示 * <p> * * @param input * @return String */ public String replaceTag(String input) { if (!hasSpecialChars(input)) { return input; } StringBuffer filtered = new StringBuffer(input.length()); char c; for (int i = 0; i <= input.length() - 1; i++) { c = input.charAt(i); switch (c) { case '<': filtered.append("<"); break; case '>': filtered.append(">"); break; case '"': filtered.append("""); break; case '&': filtered.append("&"); break; default: filtered.append(c); } } return (filtered.toString()); } /** * * 基本功能:判断标记是否存在 * <p> * * @param input * @return boolean */ public boolean hasSpecialChars(String input) { boolean flag = false; if ((input != null) && (input.length() > 0)) { char c; for (int i = 0; i <= input.length() - 1; i++) { c = input.charAt(i); switch (c) { case '>': flag = true; break; case '<': flag = true; break; case '"': flag = true; break; case '&': flag = true; break; } } } return flag; } /** * * 基本功能:过滤所有以"<"开头以">"结尾的标签 * <p> * * @param str * @return String */ public static String filterHtml(String str) { Pattern pattern = Pattern.compile(regxpForHtml); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); boolean result1 = matcher.find(); while (result1) { matcher.appendReplacement(sb, ""); result1 = matcher.find(); } matcher.appendTail(sb); return sb.toString(); } /** * * 基本功能:过滤指定标签 * <p> * * @param str * @param tag * 指定标签 * @return String */ public static String fiterHtmlTag(String str, String tag) { String regxp = "<\\s*" + tag + "\\s+([^>]*)\\s*>"; Pattern pattern = Pattern.compile(regxp); Matcher matcher = pattern.matcher(str); StringBuffer sb = new StringBuffer(); boolean result1 = matcher.find(); while (result1) { matcher.appendReplacement(sb, ""); result1 = matcher.find(); } matcher.appendTail(sb); return sb.toString(); } /** * * 基本功能:替换指定的标签 * <p> * * @param str * @param beforeTag * 要替换的标签 * @param tagAttrib * 要替换的标签属性值 * @param startTag * 新标签开始标记 * @param endTag * 新标签结束标记 * @return String * @如:替换img标签的src属性值为[img]属性值[/img] */ public static String replaceHtmlTag(String str, String beforeTag, String tagAttrib, String startTag, String endTag) { String regxpForTag = "<\\s*" + beforeTag + "\\s+([^>]*)\\s*>"; String regxpForTagAttrib = tagAttrib + "=\"([^\"]+)\""; Pattern patternForTag = Pattern.compile(regxpForTag); Pattern patternForAttrib = Pattern.compile(regxpForTagAttrib); Matcher matcherForTag = patternForTag.matcher(str); StringBuffer sb = new StringBuffer(); boolean result = matcherForTag.find(); while (result) { StringBuffer sbreplace = new StringBuffer(); Matcher matcherForAttrib = patternForAttrib.matcher(matcherForTag .group(1)); if (matcherForAttrib.find()) { matcherForAttrib.appendReplacement(sbreplace, startTag + matcherForAttrib.group(1) + endTag); } matcherForTag.appendReplacement(sb, sbreplace.toString()); result = matcherForTag.find(); } matcherForTag.appendTail(sb); return sb.toString(); }/*** 从html中提取纯文本* @param strHtml html代码* @return 返回提取的文本*/public static String htmlToStr(String strHtml) {String txtContent = strHtml.replaceAll("</?[^>]+>", ""); //剔出<html>的标签txtContent = txtContent.replaceAll("<a>\\s*|\t|\r|\n</a>", "");//去除字符串中的空格,回车,换行符,制表符return txtContent;}
}
过滤HTML标签java工具类相关推荐
- 【java工具类-抓取图片】正则抓取内容里面的j图片,正则,图片替换格式处理图片java处理文章内容里面的图片格式化工具类,能够最大限度的自动是被图片IMG标签和java使用正则抓取图片说明
目录 1.java处理图片格式自动抓取格式案例 java代码运行案例: 自动抓取的结果如下 2.java代码去除HTML的格式进行返回无格式文本代码 可以经过正则过滤掉,里面的HTML格式,删除空格, ...
- 干货:排名前 16 的 Java 工具类!
2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类! 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...
- 排名前 16 的 Java 工具类
转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...
- beanutils工具类_16 个超级实用的 Java 工具类!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- java轻量级并行工具类_16 个超级实用的 Java 工具类
原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...
- java 文本工具类_干货:排名前16的Java工具类
原标题:干货:排名前16的Java工具类 作者丨Java技术栈 https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Ja ...
- 干货:排名前16的Java工具类
image 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源 ...
- 排名前16的Java工具类
原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...
- java xml最火的的工具_几种高效的Java工具类推荐
本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...
最新文章
- 某口腔app发现了不友善词汇(f*ckMobile)
- fiddler修改接口请求返回数据Response的三种方法
- 网站优化中导致关键词排名不稳定的原因有哪些?
- 编译其他mysql客户程_mysql编译模块
- why metadata request for GM4 via http will be redirected to https via 307 s
- P3527 [POI2011]MET-Meteors 整体二分 + 树状数组
- 【渝粤题库】陕西师范大学201451 中国法制史作业
- Win7电脑设置定时关机的操作方法
- FaceWarehouse: a 3D Facial Expression Database for Visual Computing
- redis源码剖析(2):基础数据结构ADLIST
- 暴风一号 病毒 源码学习
- 员工工号怎么编码_员工编号管理制度
- MySQL登录出错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
- win10分辨率设置_win10分辨率设置方法教程
- Zynq术语详解,不懂啥是PL,PS,APU,SCU?那就进来看看吧
- 支付宝调起支付时显示的商家别名如何修改?
- 乐视商城官方微博壕送5000张电影票:生态可以这样纵横
- 修改IDA pdb下载目录的方法(已实践)
- CCCCCCCCCCCCCCCCCCC
- 人人视频APP突遭下架:上亿用户慌了
热门文章
- Python 入门基础 - 基础类型
- PT100高精度测温电路 AD623+REF3030(转载)
- TI2000系列JTAG仿真器XDS220U使用注意事项
- 个人电脑日常必备软件推荐,无广告、好用、持续更新
- Part4.2 ros中的坐标变换 动态坐标变换
- 关于设计思维课程的学习思考
- 4.5.1、CUBEMX USB之MSC+CDC
- 2021年市政方向-岗位技能(质量员)考试及市政方向-岗位技能(质量员)考试资料
- 百度工程能力提升之道--方法,DevOps工具,人员能力,研发数据
- 盘点海外KOL营销模式