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

茗果美妆87

茗果美妆87

2016-02-19 10:10

下面图老师小编要跟大家分享几个高效简洁的字符处理函数,简单的过程中其实暗藏玄机,还是要细心学习,喜欢还请记得收藏哦!
              都是基于 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=[];iarrayLike.length;i++) ret.push(arrayLike[i]) 
 7     return ret 
 8 }; 
 9 Array.prototype.any=function(f){ 
10     for(var i=0;ithis.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
展开更多 50%)
分享

猜你喜欢

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

Web开发
几个高效简洁的字符处理函数

MFC中几个有用的字符串操作函数

编程语言 网络编程
MFC中几个有用的字符串操作函数

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

mysql的字符串函数

MySQL mysql数据库
mysql的字符串函数

几个常用的ASP函数

Web开发
几个常用的ASP函数

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

几个常用的小函数

ASP
几个常用的小函数

函数调用的几个概念

编程语言 网络编程
函数调用的几个概念

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

诘屈聱牙之javascript中国象棋

诘屈聱牙之javascript中国象棋

Android SharedPreferences的使用分析

Android SharedPreferences的使用分析
下拉加载更多内容 ↓