自动生成文章摘要[JavaScript 版本]

 更新时间:2006年12月11日 00:00:00   投稿:mdxy-dxy  
这篇文章主要介绍了自动生成文章摘要[JavaScript 版本]

By dknt From bbs.blueidea.com

搜了搜这个,发现找不到答案。所以自己写了一个,很多程序绕过这个问题,往往人工来决定在何处截断,太麻烦了。

实现内容:截断一段含有HTML代码的文本,但是不会出现围堵标记没有封闭的问题。

一个PHP版本的在这里!: 自动生成文章摘要[PHP版本]

核心部分如下:

复制代码 代码如下:

function Generate_Brief(text,length){
    if(text.length < length) return text;
    var Foremost = text.substr(0,length);
            
    var re = /<(\/?)(BODY|SCRIPT|P|DIV|H1|H2|H3|H4|H5|H6|ADDRESS|PRE|TABLE|TR|TD|TH|INPUT|SELECT|TEXTAREA|OBJECT|A|UL|OL|LI|BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT|SPAN)[^>]*(>?)/ig;
    
    var Singlable = /BASE|META|LINK|HR|BR|PARAM|IMG|AREA|INPUT/i
    var Stack = new Array(), posStack = new Array();
    while(true){
        var newone = re.exec(Foremost);
        if(newone == null) break;
        
        if(newone[1] == ""){
            var Elem = newone[2];
            if(Elem.match(Singlable) && newone[3]!= ""){
                continue;
            }
            Stack.push(newone[2].toUpperCase());
            posStack.push(newone.index);
            
            if(newone[3] == "") break;
        }else{
            var StackTop = Stack[Stack.length-1];
            var End  = newone[2].toUpperCase();
            if(StackTop == End){
                Stack.pop();
                posStack.pop();
                if(newone[3] == ""){
                    Foremost = Foremost+">";
                }
            }
            
        };
    }    
    var cutpos = posStack.shift();
    Foremost = Foremost.substring(0,cutpos);
    
    return Foremost;
}


测试用例如下:

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

这个测试用例应该是好使,如果不行,请在纯IE下打开本页面。

主要问题是文章不能超过20000字,还差一个 HTMLencode, HTMLdecode 没有写进去。没办法只好嵌入了。

HTMLencode, HTMLdecode 在 http://cs02.100steps.net/new/onejsneeded.js 定义。不是我写的,如果需要自己去拿吧。
我的空间速度对大家来说可能会比较慢,那我也没办法了...

相关文章

  • 谈谈JavaScript中function多重理解

    谈谈JavaScript中function多重理解

    Function是javascript里最常用的一个概念,javascript里的function是最容易入手的一个功能,但它也是javascript最难理解最难掌握的一个概念,接下来通过本篇文章给大家介绍javascript中的function多重理解,小伙伴们一起来学习吧
    2015-08-08
  • js 自带的sort() 方法全面了解

    js 自带的sort() 方法全面了解

    下面小编就为大家带来一篇js 自带的sort() 方法全面了解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • JS实现的跨浏览器解析XML文件实例

    JS实现的跨浏览器解析XML文件实例

    这篇文章主要介绍了JS实现的跨浏览器解析XML文件的方法,结合实例形式分析了javascript基于ActiveXObject操作xml文件的加载与解析相关技巧,需要的朋友可以参考下
    2016-06-06
  • 用Js实现的动态增加表格示例自己写的

    用Js实现的动态增加表格示例自己写的

    动态增加表格的方法有很多,但大多说实现起来比较繁琐,本文的这个示例是作者自己手写的,经测试效果还不错,但唯独不兼容FF,感兴趣的朋友可以参考下
    2013-10-10
  • 微信小程序实现分类菜单激活状态随列表滚动而自动切换效果详解

    微信小程序实现分类菜单激活状态随列表滚动而自动切换效果详解

    这篇文章主要介绍了微信小程序分类菜单激活状态跟随列表滚动自动切换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-01-01
  • 利用原生js模拟直播弹幕滚动效果

    利用原生js模拟直播弹幕滚动效果

    弹幕是一个很常见的功能,这篇文章主要给大家介绍了关于如何利用原生js模拟直播弹幕滚动效果的相关资料,文章通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-07-07
  • 一分钟理解js闭包

    一分钟理解js闭包

    一分钟理解js闭包,关于js闭包的内容介绍了很多,本文带着大家快速理解什么是js闭包,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • JavaScript常用基础知识强化学习

    JavaScript常用基础知识强化学习

    这篇文章主要介绍了JavaScript常用基础知识强化学习,需要的朋友可以参考下
    2015-12-12
  • 微信小程序基于Taro的分享图片功能实践详解

    微信小程序基于Taro的分享图片功能实践详解

    这篇文章主要介绍了微信小程序基于Taro的分享图片功能实践详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • JavaScript探测CSS动画是否已经完成的方法

    JavaScript探测CSS动画是否已经完成的方法

    这篇文章主要为大家详细介绍了JavaScript探测CSS动画是否已经完成的方法,感兴趣的小伙伴们可以参考一下
    2016-08-08

最新评论