几个高效,简洁的字符处理函数


Posted in Javascript onApril 12, 2007

              都是基于 String.prototype 的扩展:
 起因是有个网友和我讨论两个函数,
一个是 isDateTime (判断字符是否是符合 yyyy-mm-dd hh:mm:ss日期格式)
另一个是 left 函数,类似vbscript的left 实现中英文字符的混合截取。
他两个函数都用了循环,还用了N多 if 语句,每个函数都超过了40行代码,问我有无好的办法精简一下。
于是,我就写出了下面的代码,不敢说最效率最高,但是已经是够精简了, left函数才1行 
 

1 <script type="text/javascript">  
 2   
 3 //by Go_Rush(阿舜) from http://ashun.cnblogs.com/  
 4   
 5 function $A(arrayLike){  
 6     for(var i=0,ret=[];i<arrayLike.length;i++) ret.push(arrayLike[i])  
 7     return ret  
 8 };  
 9 Array.prototype.any=function(f){  
10     for(var i=0;i<this.length;i++) if (f(this[i],i,this)) return true;  
11     return false  
12 };  
13   
14   
15   
16 //判断 字符串 是否符合 yyyy-mm-dd hh:mm:ss的日期格式, 格式正确而且闰年闰月等也要正确  
17   
18 String.prototype.isDateTime=function(){    
19     try{  
20         var arr=(this.length==19)?this.split(/\D/):[]  
21         --arr[1]  
22         eval("var d=new Date("+arr.join(",")+")")      
23         return     Number(arr[0])==d.getFullYear() && Number(arr[1])==d.getMonth()   
24                      && Number(arr[2])==d.getDate() && Number(arr[3])==d.getHours()  
25                     && Number(arr[4])==d.getMinutes() && Number(arr[5])==d.getSeconds()  
26     }catch(x){return false}  
27 }  
28   
29 /*  
30 alert("2002-12-12 10:10:40".isDateTime())  //true  
31 alert("2002-02-31 10:10:40".isDateTime())  //false  
32 alert("2002-22-31 10:10:40".isDateTime())  //false  
33 alert("2002-22-31 30:10:40".isDateTime())  //false  
34 */  
35   
36   
37 // 检查 是否以特定的字符串结束  
38 String.prototype.startsWith=function(){  
39     var _string=this  
40     return $A(arguments).any(function(value){return _string.slice(0,value.length)==value})  
41 };  
42 /*  
43 alert("http://www.google.com/".startsWith("http://","ftp://","telnet://"))  //true  满足其中任何一个就返回 true  
44 alert("http://www.google.com/".startsWith("https://","file://"))  //false  
45 alert("abc".startsWith("a"))  //true  
46 */  
47   
48   
49 // 检查 是否以特定的字符串结束  
50 String.prototype.endsWith=function(){  
51     var _string=this  
52     return $A(arguments).any(function(value){return _string.slice(value.length*(-1))==value})  
53 };  
54   
55   
56   
57 //从左边截取n个字符 ,如果包含汉字,则汉字按两个字符计算  
58 String.prototype.left=function(n){  
59     return this.slice(0,n-this.slice(0,n).replace(/[\x00-\xff]/g,"").length)  
60 };  
61 /*  
62 alert("abcdefg".left(3)==="abc")  
63 alert("中国人cdefg".left(5)==="中国")  
64 alert("中国abcdefg".left(5)==="中国a")  
65 */  
66   
67   
68   
69   
70 //从右边截取n个字符 ,如果包含汉字,则汉字按两个字符计算  
71 String.prototype.right=function(n){  
72     return this.slice(this.slice(-n).replace(/[\x00-\xff]/g,"").length-n)  
73 };  
74   
75 /*  
76 alert("abcdefg".right(3)==="efg")  
77 alert("cdefg中国人".right(5)==="国人")  
78 alert("abcdefg中国".right(5)==="g中国")  
79 */  
80   
81 </script>
Javascript 相关文章推荐
javascript 写类方式之一
Jul 05 Javascript
JQuery跨Iframe选择实现代码
Aug 19 Javascript
JS date对象的减法处理实现代码
Dec 28 Javascript
JavaScript自动设置IFrame高度的小例子
Jun 08 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 Javascript
JavaScript函数内部属性和函数方法实例详解
Mar 17 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
Bootstrap页面标题Page Header的实现方法
Mar 22 Javascript
Vue单文件组件的如何使用方式介绍
Jul 28 Javascript
VUE2.0+ElementUI2.0表格el-table实现表头扩展el-tooltip
Nov 30 Javascript
使用puppeteer爬取网站并抓出404无效链接
Dec 20 Javascript
javascript自定义日期比较函数用法示例
Jul 22 Javascript
发两个小东西,ASP/PHP 学习工具。 用JavaScript写的
Apr 12 #Javascript
身份证号码前六位所代表的省,市,区, 以及地区编码下载
Apr 12 #Javascript
对google个性主页的拖拽效果的js的完整注释[转]
Apr 10 #Javascript
FireFox中textNode分片的问题
Apr 10 #Javascript
AJAX架构之Dojo篇
Apr 10 #Javascript
Dojo之路:如何利用Dojo实现Drag and Drop效果
Apr 10 #Javascript
给moz-firefox下添加IE方法和属性
Apr 10 #Javascript
You might like
php5 图片验证码实现代码
2009/12/11 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
2016/10/08 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
走出JavaScript初学困境—js初学
2008/12/29 Javascript
RGB颜色值转HTML十六进制(HEX)代码的JS函数
2009/04/25 Javascript
jQuery ui 1.7更新小结
2009/08/15 Javascript
Ext grid 添加右击菜单
2009/11/26 Javascript
JS实现倒计时和文字滚动的效果实例
2014/10/29 Javascript
JavaScript实现的内存数据库LokiJS介绍和入门实例
2014/11/17 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
Python数据分析之获取双色球历史信息的方法示例
2018/02/03 Python
对Django 中request.get和request.post的区别详解
2019/08/12 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
2020/05/13 Python
Python CategoricalDtype自定义排序实现原理解析
2020/09/11 Python
澳大利亚票务和娱乐市场领导者:Ticketmaster
2017/03/03 全球购物
UML设计模式笔试题
2014/06/07 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
英文简历中的自我评价
2013/10/06 职场文书
学生学习总结的自我评价
2013/10/22 职场文书
奠基仪式主持词
2014/03/20 职场文书
求职意向书
2014/04/01 职场文书
学习十八大的心得体会
2014/09/12 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
企业廉洁教育心得体会
2016/01/20 职场文书
装修安全责任协议书
2016/03/22 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
Python OpenCV超详细讲解读取图像视频和网络摄像头
2022/04/02 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android