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


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判断录入的日期是否合法
Jan 08 Javascript
JQuery扩展插件Validate 3通过参数设置错误信息
Sep 05 Javascript
javascript实现数字验证码的简单实例
Feb 10 Javascript
JS嵌套函数调用上下文的问题解决
Mar 26 Javascript
简介JavaScript中的getUTCFullYear()方法的使用
Jun 10 Javascript
jQuery EasyUI中DataGird动态生成列的方法
Apr 05 Javascript
Angular中点击li标签实现更改颜色的核心代码
Dec 08 Javascript
vue监听键盘事件的快捷方法【推荐】
Jul 11 Javascript
Vue瀑布流插件的使用示例
Sep 19 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
Apr 30 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
Feb 03 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
地球防卫队:陪着奥特曼打小怪兽的人类力量 那些经典队服
2020/03/08 日漫
php 函数中使用static的说明
2012/06/01 PHP
PHP中__get()和__set()的用法实例详解
2013/06/04 PHP
php获取目标函数执行时间示例
2014/03/04 PHP
PHP提交表单失败后如何保留已经填写的信息
2014/06/20 PHP
php输入数据统一类实例
2015/02/23 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
php构造方法中析构方法在继承中的表现
2016/04/12 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
JS 获取浏览器和屏幕宽高等信息代码
2014/03/31 Javascript
jQuery应用之jQuery链用法实例
2015/01/19 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
JavaScript+html5 canvas实现图片破碎重组动画特效
2016/02/22 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
你眼中的Python大牛 应该都有这份书单
2017/10/31 Python
疯狂上涨的Python 开发者应从2.x还是3.x着手?
2017/11/16 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
python 对key为时间的dict排序方法
2018/10/17 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
Python pip使用超时问题解决方案
2020/08/03 Python
苹果台湾官网:Apple台湾
2019/01/05 全球购物
护理专业毕业生自我鉴定
2013/10/08 职场文书
美德少年事迹材料
2014/01/23 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
招股说明书范本
2014/05/06 职场文书
环保建议书200字
2014/05/14 职场文书
林肯就职演讲稿
2014/05/19 职场文书
乡镇务虚会发言材料
2014/10/20 职场文书
教师外出学习心得体会
2016/01/18 职场文书