转自: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生成摘要的更多相关文章

  1. JAVA调用 keytool 生成keystore 和 cer 证书

    keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...

  2. gen目录无法更新,或者gen目录下的R.JAVA文件无法生成

    gen目录无法更新,或者gen目录下的R.JAVA文件无法生成 1.gen目录的用处 android gen目录下的R.java并不是由用户创建,而是android工程本身将android的资源进行自 ...

  3. java中如何生成可执行的jar文件

    java中如何生成可执行的jar文件 最简单的方法就是: jar -cfe Card.jar CardLayoutDemo CardLayoutDemo$1.class CardLayoutDemo$ ...

  4. 通过java来批量生成身份证号

    通过java来批量生成身份证号,方便来测试程序. package com.diyvc.controller.user; import java.util.Calendar; import java.u ...

  5. JAVA基础学习之命令行方式、配置环境变量、进制的基本转换、排序法、JAVA文档生成等(1)

    1.命令行方式 dos命令行,常见的命令: dir:列出当前目录下的文件以及文件夹 md:创建目录 rd:删除目录 cd:进入指定目录 cd..:退回到上一级目录 cd/:退回到根目录 del:删除文 ...

  6. 利用Java随机,生成随机学生数据

    为模拟向数据库中大量插入学生数据(注:此处应该用PreparedStatement.batchUpdate等批处理提高效率)的情形,通过Java随机来生成学生数据. 一.要生成的学生数据 studen ...

  7. Java订单号生成,唯一订单号(日均千万级别不重复)

    Java订单号生成,唯一订单号 相信大家都可以搜索到很多的订单的生成方式,不懂的直接百度.. 1.订单号需要具备以下几个特点. 1.1 全站唯一性. 1.2 最好可读性. 1.3 随机性,不能重复,同 ...

  8. 用java从0生成一个简单的excel

    用java从0生成一个简单的excel 目标 用代码实现对一个excel的基础操作,包括创建,插入文字,(好像就这些了),生成的excel可以用wps打开,如果直接用c++的文件流会生成假的xls表格 ...

  9. Java WebService接口生成和调用 图文详解>【转】【待调整】

    webservice简介: Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的.专门的第三方软件或硬件, 就可相互交换数据或集成.依据Web Service规范实施的应用之间 ...

随机推荐

  1. SQL Server中的高可用性(2)----文件与文件组

        在谈到SQL Server的高可用性之前,我们首先要谈一谈单实例的高可用性.在单实例的高可用性中,不可忽略的就是文件和文件组的高可用性.SQL Server允许在某些文件损坏或离线的情况下,允 ...

  2. 用scikit-learn进行LDA降维

    在线性判别分析LDA原理总结中,我们对LDA降维的原理做了总结,这里我们就对scikit-learn中LDA的降维使用做一个总结. 1. 对scikit-learn中LDA类概述 在scikit-le ...

  3. 初步了解nodejs

    什么是Node.js? 很多初学者并没有真正地理解Node.js到底是什么.nodejs.org网站中的描述也没有多大帮助. 首先要清楚Node不是一个Web服务器,这十分重要.它本身并不能做任何事情 ...

  4. 利用CSS中的:after、: before制作的边三角提示框

    小颖昨天分享了一篇参考bootstrap中的popover.js的css画消息弹框今天给大家再分享一篇使用:before和:after伪元素画消息弹框的CSS. 画出来是介个酱紫的: 有没有觉得画的萌 ...

  5. Node.js:path、url、querystring模块

    Path模块 该模块提供了对文件或目录路径处理的方法,使用require('path')引用. 1.获取文件路径最后部分basename 使用basename(path[,ext])方法来获取路径的最 ...

  6. Linux上如何查看物理CPU个数,核数,线程数

    首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...

  7. MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  8. await and async

    Most people have already heard about the new “async” and “await” functionality coming in Visual Stud ...

  9. 【干货分享】流程DEMO-资产请购单

    流程名: 资产请购  业务描述: 流程发起时,会检查预算,如果预算不够,流程必须经过总裁审批,如果预算够用,将发起流程,同时占用相应金额的预算,但撤销流程会释放相应金额的预算.  流程相关文件: 流程 ...

  10. 【干货分享】流程DEMO-采购预算编制

    流程名: 采购预算编制  业务描述: 在月初由计财部进行预算编辑,提交审批后预算生效  流程相关文件: 流程包.xml WebService业务服务.xml WebService.asmx WebSe ...