java根据html生成摘要
转自:http://java.freesion.com/article/48772295755/
开发一个系统,需要用到这个,根据html生成你指定多少位的摘要
package com.chendaojun.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class ParseHtml {
public static void main(String[] args){
//可以将注释打开逐个试验
ParseHtml ph = new ParseHtml();
String html="";
//打开下面两行可进行连接mysql并解析html
//html=ph.getHtmlFromMysql();
//System.out.println(ph.parseHtml(html));
//System.out.println(ph.parseHtml(html,300));
//打开下面两行可进行获得路径文件内容并解析html,路径根据实际修改
//html=ph.getHtml("E:\\1478300.html");
//System.out.println(ph.parseHtml(html));
//System.out.println(ph.parseHtml(html,300));
//指定长度直接解析
//html=ph.parseHtml("<p>sdfsdf</p><br><div>sdfsdfsdf</div>",10);
//System.out.println(html);
//直接解析
html=ph.parseHtml("<p>sdfsdf</p><br><div>sdfsdfsdf</div>sdflksdflksdjfk<dkf");
System.out.println(html);
}
//从mysql中取出在线编辑器存进去的html文章
public String getHtmlFromMysql(){
String url="jdbc:mysql://localhost:3306/blog";
String userName="root";
String passWord="root";
String className="com.mysql.jdbc.Driver";
String sql="select text from blog where id=5";
String html="";
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
try{
Class.forName(className);
conn=DriverManager.getConnection(url,userName,passWord);
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
while(rs.next()){
//获得html内容
html=rs.getString("text");
}
}catch(Exception e){
e.printStackTrace();
}finally{
try{
if(rs!=null){
rs.close();
rs=null;
}
if(stmt!=null){
stmt.close();
stmt=null;
}
if(conn!=null){
conn.close();
conn=null;
}
}catch(Exception e){
e.printStackTrace();
}
}
return html;
}
//从指定路径读取html文件
public String getHtml(String filePath) {
String html = "";
FileInputStream fis = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
File file = new File(filePath);
fis = new FileInputStream(file);
isr = new InputStreamReader(fis);
br = new BufferedReader(isr);
String bRead = "";
while ((bRead = br.readLine()) != null) {
html += bRead;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(br!=null){
br.close();
br=null;
}
if(isr!=null){
isr.close();
isr=null;
}
if(fis!=null){
fis.close();
fis=null;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return html;
}
//任意html,残缺不全也可以
public String parseHtml(String html) {
/*
* <.*?>为正则表达式,其中的.表示任意字符,*?表示出现0次或0次以上,此方法可以去掉双头标签(双头针对于残缺的标签)
* "<.*?"表示<尖括号后的所有字符,此方法可以去掉残缺的标签,及后面的内容
* " ",若有多种此种字符,可用同一方法去除
*/
html = html.replaceAll("<.*?>", " ").replaceAll(" ", " ");
html = html.replaceAll("<.*?", "");
return (html + "...");
}
//可以指定截取长度
public String parseHtml(String html,int length) {
if(html.length()<length){
return "截取长度超过文件内容总长";
}
return parseHtml(html.substring(0, length));
}
}
java根据html生成摘要的更多相关文章
- JAVA调用 keytool 生成keystore 和 cer 证书
keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...
- gen目录无法更新,或者gen目录下的R.JAVA文件无法生成
gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自 ...
- java中如何生成可执行的jar文件
java中如何生成可执行的jar文件 最简单的方法就是: jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$ ...
- 通过java来批量生成身份证号
通过java来批量生成身份证号,方便来测试程序. package com.diyvc.controller.user; import java.util.Calendar; import java.u ...
- JAVA基础学习之命令行方式、配置环境变量、进制的基本转换、排序法、JAVA文档生成等(1)
1.命令行方式 dos命令行,常见的命令: dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回到上一级目录 cd/:退回到根目录 del:删除文 ...
- 利用Java随机,生成随机学生数据
为模拟向数据库中大量插入学生数据(注:此处应该用PreparedStatement.batchUpdate等批处理提高效率)的情形,通过Java随机来生成学生数据. 一.要生成的学生数据 studen ...
- Java订单号生成,唯一订单号(日均千万级别不重复)
Java订单号生成,唯一订单号 相信大家都可以搜索到很多的订单的生成方式,不懂的直接百度.. 1.订单号需要具备以下几个特点. 1.1 全站唯一性. 1.2 最好可读性. 1.3 随机性,不能重复,同 ...
- 用java从0生成一个简单的excel
用java从0生成一个简单的excel 目标 用代码实现对一个excel的基础操作,包括创建,插入文字,(好像就这些了),生成的excel可以用wps打开,如果直接用c++的文件流会生成假的xls表格 ...
- Java WebService接口生成和调用 图文详解>【转】【待调整】
webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间 ...
随机推荐
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- 在离线环境中使用.NET Core
在离线环境中使用.NET Core 0x00 写在开始 很早开始就对.NET Core比较关注,一改微软之前给人的印象,变得轻量.开源.跨平台.最近打算试着在工作中使用.但工作是在与互联网完全隔离的网 ...
- 小白解决CENTOS7错误:Cannot find a valid baseurl for repo: base/7/x86_6
刚入手的MacBook想着学点东西,本汪还是决定玩玩CentOS服务器,安装好了VirtualBox + CentOS. 打开一看,懵逼了!命令行! 行吧,先装个图形界面: $sudo yum gro ...
- TinyWeb v1.0 正式完成第一个Release版本(功能基于 libuv 跨平台库)
使用方法很简单,很容易融入现有项目,使现有项目拥有Web网站功能和WebSocket,以及Socket直连! 并且包含了一个跨平台(windows/linux)工具集合; 嗯,也挺棒的^,^ 在项目中 ...
- 从零开始编写自己的C#框架(24)——测试
导航 1.前言 2.不堪回首的开发往事 3.测试推动开发的成长——将Bug消灭在自测中 4.关于软件测试 5.制定测试计划 6.编写测试用例 7.执行测试用例 8.发现并提交Bug 9.开发人员修复B ...
- [原]Cachedb 网络模块文档
Cachedb 网络模块文档 整体结构 多路复用 (epoll 模块) 事件驱动 (事件封装) 缓冲管理 (上层buffer管理) 设计思想 层次化的设计,每一个模块只调用上一个模块的接口,并将耦合聚 ...
- js callee,caller学习
原文地址:js callee,caller学习 /* * caller 返回一个对函数的引用,该函数调用了当前函数. * 如果函数是由顶层调用的,那么 caller包含的就是 null . * 如果在 ...
- javascript运动系列第一篇——匀速运动
× 目录 [1]简单运动 [2]定时器管理 [3]分享到效果[4]移入移出[5]运动函数[6]透明度[7]多值[8]多物体[9]回调[10]函数完善[11]最终函数 前面的话 除了拖拽以外,运动也是j ...
- css3更改input单选和多选的样式
在项目开发中我们经常会遇到需要更改input单选和多选样式的情况,今天就给大家介绍一种简单改变input单选和多选样式的办法. 在这之前先简单介绍一下:before伪类 :before 选择器向选定的 ...
- iOS之App Store上架被拒Legal - 5.1.5问题
今天在看到App Store 上架过程中,苹果公司反馈的拒绝原因发现了这么一个问题: Legal - 5.1.5 Your app uses background location services ...