<script>

function  getPageNumRange(pagenumstr)
{
var pages=pagenumstr.split(";");
pages.sort(function(a,b){
return a-b;
});
var delta=0;
var lianxiu=new Array();
var bulianxiu=new Array();
for(var i=0;i<pages.length;i++){
delta=0;
delta=(1*pages[i+1])-(1*pages[i]);
if(1==delta)
{ //连续
lianxiu.push(pages[i]);
lianxiu.push(pages[i+1]);
}
else
{
if(delta>1)
{ //不连续
lianxiu.push("|");
if(lianxiu.indexOf(pages[i])==-1)
bulianxiu.push(pages[i]);
}
} if (i==pages.length-1){
if(lianxiu.indexOf(pages[i])==-1)
{
bulianxiu.push(pages[i]);
}
}
} lianxiuStr=lianxiu.toString().replace(/\|\,/g,"|").replace(/\,\|/g,"|");
var lianxiuArr=lianxiuStr.split("|");
var ResultStr1="";
for(var i=0;i<lianxiuArr.length;i++){
var yema=lianxiuArr[i];
if(""!=yema)
{
var yemaArr=yema.split(","); if(""==ResultStr1)
{
ResultStr1=yemaArr[0]+"-"+yemaArr[yemaArr.length-1];
}
else
{
ResultStr1=ResultStr1+";"+yemaArr[0]+"-"+yemaArr[yemaArr.length-1];
}
}
}//for var resultPageNums="";
var resultList=ResultStr1.split(";"); for(var i=0;i<bulianxiu.length;i++){
resultList.push(bulianxiu[i]);
} resultList.sort(function(a,b){
var v1,v2;
if(a.indexOf("-")!=-1)
{
v1=a.substr(0,a.indexOf("-"))*1;
}else v1=a*1; if(b.indexOf("-")!=-1)
{
v2=b.substr(0,b.indexOf("-"))*1;
}else v2=b*1;
return v1-v2;
});
return resultList.toString();
} alert(getPageNumRange("9;10;17;18;19;21;23;25;26;27;28;30;36;37;38;40")); </script>

getPageNumRange的更多相关文章

随机推荐

  1. 如何让 KiCad EDA 5.1 不显示铺铜

    如何让 KiCad EDA 5.1 不显示铺铜 在画板最后给 PCB 铺地,铺地结束后检查然后发板出去打板. 板子回来焊接,调试时发现有问题,边调边改线路,打开 KiCad 一看满屏的铜皮,怎么改呀? ...

  2. windows 端口转发

    1.添加端口转发 netsh interface portproxy add v4tov4 listenport=5000 listenaddress=10.30.3.148 connectport= ...

  3. C语言堆栈入门——堆和栈的区别(转)

    一.预备知识—程序的内存分配    一个由C/C++编译的程序占用的内存分为以下几个部分    1.栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等.其    操 ...

  4. Java使用算数运算符实现两个整数互换

    有很简单的方法可以实现,不过还是用一步一个脚印的方法来试试 首先分析一下流程 这里有两个变量. int a = 10,b = 40; //此时 a 为10,b 为40 然后我们开始走路,在不依靠第三者 ...

  5. React Native学习(一) 环境搭建

    需安装工具 RN环境: [必须] Node [必须] react-native-cli [可选] Node Package Manager(npm):node包管理工具,一般安装Node会带上npm ...

  6. 机器学习实战ch04 关于python版本所支持的文本格式问题

    函数定义中: def spamTest(): docList=[]; classList = []; fullText =[] for i in range(1,26):# print('cycle ...

  7. Windows 10 RS4 无法完全关闭Hyper-V导致Virtual Box 虚拟机无法启动

    https://www.jianshu.com/p/2e3429d45aea 起因 因为需要使用Virtual Box做一些工作,卸载了Windows Docker.按照经验,关闭了Hyper-V. ...

  8. eclipse项目上传服务器注意事项

    1.先准备服务器环境 2 数据库导入,tomcat安装 3 开放服务器端口,配置网络 4.修改本地代码修改为发布版本,即ip,账号密码数据库等 5 变动的信息应该写在配置文件或者一个全局产量中,这样才 ...

  9. Delphi编译选项

    编译选项的设置,称为“开关指令”,其中大部分值为布尔类型 一.代码生成(Code generation)1.Optimization  优化代码,默认true2.Stack frames  生成过程/ ...

  10. RDLC报表系列--------初级报表

    前面记录下了很多平时开发遇到的问题,RLDC之前也是不会,只会水晶报表,后来也慢慢的也上手了.把这些记录下来,以后用的着 1.打开VS添加新建项,选择Reporting,选择报表,后缀名为RLDC的名 ...