jsp/java截取截断html内容的方法与技巧
来源:互联网 发布:单片机mos管开关电路 编辑:程序博客网 时间:2024/05/18 21:41
http://www.iteye.com/topic/730396
package com.tools; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; @SuppressWarnings({"unchecked" }) public class CutHtml { static String htmlMatch = ""; // 通过递归删除html文件中的配对的html标签 public static String removeMatchHtmlTag() { // String html="<p></p><table><tr><td></td><td></td></tr></table>"; Pattern p = Pattern.compile("<([a-zA-Z]+)[^<>]*>(.*?)</\\1>"); Matcher m = p.matcher(htmlMatch); if (m.find()) { // System.out.println(htmlMatch); htmlMatch = htmlMatch.replaceAll("<([a-zA-Z]+)[^<>]*>(.*?)</\\1>","$2"); removeMatchHtmlTag(); } return htmlMatch; } public static String subStringHTML(String param, int length, String endWith) { if(length<1) {System.out.println("length must >0");return null;} if(param.length()<length){return param;} StringBuffer result = new StringBuffer(); StringBuffer str = new StringBuffer(); int n = 0; char temp; boolean isCode = false; // 是不是HTML代码 boolean isHTML = false; // 是不是HTML特殊字符,如 for (int i = 0; i < param.length(); i++) { temp = param.charAt(i); if (temp == ’<’) { isCode = true; } else if (temp == ’&’) { isHTML = true; } else if (temp == ’>’ && isCode) { n = n - 1; isCode = false; } else if (temp == ’;’ && isHTML) { isHTML = false; } if (!isCode && !isHTML) { n = n + 1; // UNICODE码字符占两个字节 if ((temp + "").getBytes().length > 1) { n = n + 1; } str.append(temp); } result.append(temp); if (n >= length) { break; } } result.append(endWith); // 取出截取字符串中的HTML标记 String temp_result = result.toString().replaceAll("(>)[^<>]*(<?)","$1$2"); // 去掉不需要结束标记的HTML标记 temp_result = temp_result .replaceAll("<(AREA|BASE|BASEFONT|BODY|BR|COL|COLGROUP|DD|DT|FRAME|HEAD|HR|HTML|IMG|INPUT|ISINDEX|LI|LINK|META|OPTION|P|PARAM|TBODY|TD|TFOOT|TH|THEAD|TR|area|base|basefont|body|br|col|colgroup|dd|dt|frame|head|hr|html|img|input|isindex|li|link|meta|option|p|param|tbody|td|tfoot|th|thead|tr)[^<>]*/>",""); // 去掉成对的HTML标记 // temp_result=temp_result.replaceAll("<([a-zA-Z]+)[^<>]*>(.*?)</\\1>","$2"); htmlMatch = temp_result; temp_result = removeMatchHtmlTag(); //System.out.println("6666:" + temp_result); // 用正则表达式取出标记 Pattern p = Pattern.compile("<([a-zA-Z]+)[^<>]*>"); Matcher m = p.matcher(temp_result); List endHTML = new ArrayList(); while (m.find()) { endHTML.add(m.group(1)); } // 补全不成对的HTML标记 for (int i = endHTML.size() - 1; i >= 0; i--) { result.append("</"); result.append(endHTML.get(i)); result.append(">"); } return result.toString(); } public static void main(String args[]) { String param = "<html><p><p>0<img src=’xx.gif’/>http://www.dukai168.cn ©</p><table><tr><td>678901</td><td>21111111111</td></tr></table></p></html>"; System.out.println(CutHtml.subStringHTML(param,100, "...")); } }
- jsp/java截取截断html内容的方法与技巧
- jsp页面输出的内容被截断
- jsp页面输出的内容被截断
- 截取带HTML的内容
- 截断超出的内容
- C#实现的html内容截取
- java 内容的截取使用
- java 文本内容中 截取 方法
- 原创_php截取指定字符之间内容的类与实例(含转码、过滤html等)
- php截取指定字符之间内容的类与实例(含转码、过滤html等)
- php截取指定字符之间内容的类与实例(含转码、过滤html等)
- 内容被截断的问题
- 截取新闻html编码内容
- 解决浏览器与html内容空白的方法
- java 字符串截取的方法
- java 内容截取类
- 小技巧----java中字符串的截取
- JAVA截取带有HTML的字符串[转]
- css对不同浏览器兼容的问题
- vector clock算法保证版本信息
- 数组函数一些-特定功能
- android屏幕大小,字体大小,横屏竖屏切换问题
- ios中NSPredicate的用法
- jsp/java截取截断html内容的方法与技巧
- 真机调试出现问题,无法将应用程序装到设备上
- 排序帮助类(包括对string[],int[],datatable,T[]进行排序) .
- NIO.2 入门,第 2 部分: 文件系统 API
- Android广播(笔记)
- 14条最佳JS代码编写技巧
- 操作XML公共类 .
- java_xml读取写入方法
- Count/Sum of Form记录数合计数