当前位置: 首页 > 图文教程 > 网络编程 > Javascript > 自动生成文章摘要[JavaScript 版本]

Javascript
form中限制文本字节数js代码
use jscript with List Proxy Server Information
use jscript List Installed Software
List Installed Software Features
List Information About the Binary Files Used by an Application
List the Codec Files on a Computer
List the UTC Time on a Computer
List Installed Hot Fixes
excel操作之Add Data to a Spreadsheet Cell
Add Formatted Data to a Spreadsheet
Apply an AutoFormat to an Excel Spreadsheet
JavaScript语法着色引擎(demo及打包文件下载)
类之Prototype.js学习
一款JavaScript压缩工具:X2JSCompactor
iis6+javascript Add an Extension File
jscript之Open an Excel Spreadsheet
jscript之Read an Excel Spreadsheet
jscript之List Excel Color Values
去除图像或链接黑眼圈的两种方法总结
Add a Formatted Table to a Word Document

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 143 ::
收藏到网摘: n/a

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 全选 提示:你可先修改部分代码,再按运行]

这个测试用例应该是好使,如果不行,请在纯IE下打开本页面。
主要问题是文章不能超过20000字,还差一个 HTMLencode, HTMLdecode 没有写进去。没办法只好嵌入了。
HTMLencode, HTMLdecode 在 http://cs02.100steps.net/new/onejsneeded.js 定义。不是我写的,如果需要自己去拿吧。
我的空间速度对大家来说可能会比较慢,那我也没办法了...