日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

String.prototype 几个简洁的字符处理函数 (转)

發布時間:2023/12/18 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 String.prototype 几个简洁的字符处理函数 (转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

都是基于 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>

轉載于:https://www.cnblogs.com/RobotTech/archive/2006/12/29/607495.html

總結

以上是生活随笔為你收集整理的String.prototype 几个简洁的字符处理函数 (转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。