您当前位置:设计在线网 >> JavaScript >> 浏览文章

基于jsp/java截取截断html内容的方法与技巧

分享到:
本文章讲述了基于jsp/java截取截断html内容的方法与技巧.

2010年

08月05日

当发表一篇显示在前台文章时,不能把一整篇文章都显示在页面上,这样就很不方便读者获取更多咨讯,leo发布的文章里面包含html,这样在截取,截断html内容的时候问题就出现了.看看leo的用jsp/java截取截断html内容的方法与技巧!

其实用java来做很简单,就是一个算法,主要是用到了正则表达式,leo想用其他的语言也可以做,这里leo对其他的语言不熟悉,就不做了,现在示范一个用java/jsp做的截取,截断html内容程序.

用java截取截断html内容

大家看这个程序:(支持转义字符

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="

";

Pattern p = Pattern.compile("]*>(.*?)");

Matcher m = p.matcher(htmlMatch);

if (m.find()) {

//System.out.println(htmlMatch);

htmlMatch = htmlMatch.replaceAll("]*>(.*?)","$2");

removeMatchHtmlTag();

}

return htmlMatch;

}

public static String subStringHTML(String param, int length, String endWith) {

if(length0");return null;}

if(param.length()HTML代码

boolean isHTML = false; // 是不是HTML特殊字符,如

for (int i = 0; i

temp = param.charAt(i);

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("(>)[^HTML标记

temp_result = temp_result

.replaceAll("HTML|IMG|INPUT|ISINDEX|LI|LINK|META|OPT ION|P|PARAM|TBODY|TD|TFOOT|TH|THEAD|TR|area|base|ba sefont|body|br|col|colgroup|dd|dt|frame|head|hr|htm l|img|input|isindex|li|link|meta|option|p|param|tbo dy|td|tfoot|th|thead|tr)[^","");

// 去掉成对的HTML标记

// temp_result=temp_result.replaceAll("] *>(.*?)","$2");

htmlMatch = temp_result;

temp_result = removeMatchHtmlTag();

//System.out.println("6666:" + temp_result);

// 用正则表达式取出标记

Pattern p = Pattern.compile("]*>");

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("");

}

return result.toString();

}

public static void main(String args[]) {

String param = "

0http://www.dukai168.cn ©

678901

21111111111

";

System.out.println(CutHtml.subStringHTML(param,100, "..."));

}}

 

推荐阅读:
基于Java中的字符编码与解码讲解
Java解题 有关POJ1423求n的阶乘
Java操作文本文件处理问题讲解
推荐文章  
赞助商链接  
热门排行  
主题推广  
中国设计在线网 All Rights Reserved. 互联网违法和不良信息举报
信息产业部备案号:湘ICP备09001063号