亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Regex > 正文

Javascript 字符串字節長度計算函數代碼與效率分析(for VS 正則)

2020-03-16 21:14:20
字體:
來源:轉載
供稿:網友
下面的函數都是用于計算字符串長度,英文算一個,中文算兩個。效果一樣,效率卻未必一樣,大家可以自行選擇下。
 
 
先看看一下兩段代碼吧,它們分別用for循環和正則表達式來檢測字符串的字節長度: 

for循環檢測字符串的字節長度方法一: 

復制代碼代碼如下:

var lenFor = function(str){ 
var byteLen=0,len=str.length; 
if(str){ 
for(var i=0; i<len; i++){ 
if(str.charCodeAt(i)>255){ 
byteLen += 2; 

else{ 
byteLen++; 


return byteLen; 

else{ 
return 0; 


使用方法 
var strlength=lenFor(str) 
for循環檢測字符串的字節長度方法二: 
復制代碼代碼如下:

function LEN(str){ 
var i,sum=0; 
for(i=0;i<str.length;i++){ 
if((str.charCodeAt(i)>=0) && (str.charCodeAt(i)<=255)) 
sum=sum+1; 
else 
sum=sum+2; 

return sum; 


正則表達式檢測字符串的字節長度方法三: 
有點代碼比較精簡,根據下面的測試,效率卻不高,大家可以用上面的函數。 
復制代碼代碼如下:

var lenReg = function(str){ 
return str.replace(/[^/x00-/xFF]/g,'**').length; 
}; 

var strlength2=lenReg(str) 

我用以下代碼段對以上兩個函數進行測試,主要是測試其運行時間: 
復制代碼代碼如下:

var s = '......';//一個很長的字符串,這里不羅列 

function a(){ 
var timeStart,timeEnd; 
timeStart = new Date(); 
var s1 = lenReg(s); 
timeEnd = new Date(); 
var t1 = (timeEnd - timeStart)*1000; 
timeStart = new Date(); 
var s2 = lenFor(s); 
timeEnd = new Date(); 
var t2 = (timeEnd - timeStart)*1000; 
alert('lenReg: ' + s1 + ' time: ' + t1 + '/nlenFor: ' + s2 + ' time: ' + t2); 

window.onload = function(){ 
a(); 
}; 

以上代碼在瀏覽器載入完畢的時候彈出一個警示窗口,窗口上有兩行信息:第一行是用正則表達式檢測的字符串字節長度和所用時間(×1000);第二行是用for循環檢測字符串字節長度和所用時間(×1000)。 



我得到兩種答案: 

第一種: 

lenReg: 25824 time: 20000 

lenFor: 25824 time: 10000 

第二種: 

lenReg: 48795 time: 15000 

lenFor: 48795 time: 25000 

需要說明的是,兩次測試所用的字符串為同一字符串。 

為什么會相差那么大呢?我到底偷偷改了什么??以上我提過,“中文字符占用2個字節(與編碼有關)”(本文第三段),中文字符占用多少個字節是與編碼有關的,一般情況下,GB-2312和UTF-8編碼中,中文字符占用2個字節,但是在iso-8859-1編碼中,中文字符占用5個字節。 

是的,問題就在于文檔的編碼。以上第一種情況的編碼為:charset=UTF-8,第二種情況的編碼為charset=iso-8859-1。 


在中文網頁中,我們一般都不會用charset=iso-8859-1進行編碼(中文亂碼),而是用charset=UTF-8或GB-2312進行編碼。問題就在這里,比較一下以上的第一種情況吧: 
lenReg: 25824 time: 20000 
lenFor: 25824 time: 10000 
如上所示,用正則表達式檢測所用的時間竟然是for循環的兩倍?。。。。ㄆ鋵?,測試多次之后也不全部都是兩倍,但大部分測試都是兩倍) 

為什么呢? 

str.replace(/[^/x00-/xFF]/g,'**').length; 

看看以上語句(lenReg函數中的語句)。就我個人理解,問題就出現在這里——replace的時候要遍歷一次字符串,在調用length的時候又要遍歷一次字符串,所以整個運算過程需要遍歷兩次字符串。而for循環只需要遍歷一次——這應該就是問題所在了,但是我不是非常確定。 

我不太確定以上的理解是否確切,但是從表面上分析應該是這樣的。 

那么,用正則表達式檢測真的使算法更加復雜嗎?還是以上沒有充分利用正則表達式的優勢?現在我還沒有意義的想法,需要進一步去推敲。先保持著懷疑吧^_^……

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲一区二区福利| 亚洲精品福利视频| 欧美一级片久久久久久久| 久久精品中文字幕一区| 福利视频一区二区| 97在线视频国产| 日本午夜在线亚洲.国产| 欧美亚洲国产视频小说| 久久中文字幕一区| 欧美专区福利在线| 亚洲图片制服诱惑| 亚洲一区二区三区香蕉| 国产精品福利观看| 亚洲国产一区二区三区在线观看| 欧美成人黄色小视频| 高清一区二区三区四区五区| 亚洲人高潮女人毛茸茸| 欧美巨大黑人极品精男| 91大神在线播放精品| 亚洲免费人成在线视频观看| 欧美精品videos另类日本| 韩国一区二区电影| 亚洲欧洲美洲在线综合| 亚洲高清久久久久久| 亚洲自拍偷拍网址| 国产激情久久久| 热久久视久久精品18亚洲精品| 91精品久久久久久久久久另类| 在线视频免费一区二区| 国产精品一区二区久久久久| 欧美多人乱p欧美4p久久| 色综合久综合久久综合久鬼88| 国产精品久久97| 欧美三级xxx| 色诱女教师一区二区三区| 国产精品一久久香蕉国产线看观看| 欧美性xxxx极品高清hd直播| 国产精品美女久久久久av超清| 亚洲va电影大全| 日韩中文字幕亚洲| 成人免费视频网址| 欧美精品激情blacked18| 久久99精品久久久久久青青91| 91精品国产综合久久香蕉最新版| 这里精品视频免费| 51ⅴ精品国产91久久久久久| 欧美大胆在线视频| 日本精品在线视频| 国产成人综合一区二区三区| 精品视频在线播放免| 国产精品极品尤物在线观看| 91精品综合久久久久久五月天| 亚洲国产中文字幕在线观看| 久久精品99无色码中文字幕| 亚洲第一免费播放区| 亚洲成色777777在线观看影院| 国产精品高潮在线| 日韩av综合中文字幕| 国产suv精品一区二区三区88区| 韩国视频理论视频久久| 欧美裸体视频网站| 韩曰欧美视频免费观看| 欧美国产日韩一区二区三区| 国语自产精品视频在线看抢先版图片| 隔壁老王国产在线精品| 成人在线播放av| 精品香蕉一区二区三区| 57pao成人永久免费视频| 另类视频在线观看| 国产成人啪精品视频免费网| 日韩精品视频免费专区在线播放| 夜夜嗨av色一区二区不卡| 日韩av电影在线网| 欧美日韩亚洲成人| 国产99久久精品一区二区永久免费| 日韩美女av在线免费观看| 成人字幕网zmw| 亚洲综合精品一区二区| 国产日韩中文字幕在线| 久久久久久久久综合| 欧美富婆性猛交| 国产主播在线一区| 黑人巨大精品欧美一区二区免费| 欧美一区二区三区艳史| 亚洲成人激情小说| 久久久精品国产| 日韩精品在线视频| 国产区精品视频| 在线视频日韩精品| 日韩网站免费观看| 热久久这里只有精品| 亚洲综合大片69999| 2020欧美日韩在线视频| 91精品国产一区| 欧美性少妇18aaaa视频| 国产精品久久久久久搜索| 成人精品久久久| 亚洲欧洲高清在线| 国产99久久精品一区二区| 一区二区三区亚洲| 日韩精品极品在线观看| 久久久久久久香蕉网| 亚洲人午夜精品免费| 欧美国产日韩视频| 国产福利精品在线| 午夜精品美女自拍福到在线| 欧美日韩一区二区三区在线免费观看| 青青久久aⅴ北条麻妃| 精品亚洲精品福利线在观看| 国产欧美一区二区| 日韩中文字幕网址| 成人黄色在线观看| 亚洲精品狠狠操| 国产精品va在线播放| 欧美视频在线观看免费网址| 欧美日韩一区二区在线| 亚洲偷熟乱区亚洲香蕉av| 亚洲欧美一区二区精品久久久| 国产成人在线一区二区| 自拍视频国产精品| 精品视频一区在线视频| 国色天香2019中文字幕在线观看| 国产午夜精品视频| 18一19gay欧美视频网站| 性夜试看影院91社区| 日韩高清av在线| 久久这里只有精品99| 永久555www成人免费| 最好看的2019的中文字幕视频| 欧美日韩国产二区| 国产日韩在线观看av| 91视频免费网站| 韩剧1988在线观看免费完整版| 国产一区二区三区四区福利| 亚洲欧洲日本专区| 国产免费一区二区三区香蕉精| 亚洲精品一区二区在线| 亚洲欧洲一区二区三区在线观看| 91精品国产成人| 久久精品国产2020观看福利| 亚洲国产成人爱av在线播放| 热久久美女精品天天吊色| 欧美成人精品在线播放| 尤物yw午夜国产精品视频明星| 国产精品国语对白| 日韩乱码在线视频| 亚洲人成网站色ww在线| 91美女高潮出水| 亚洲一区二区三区香蕉| 久久久久久久久久亚洲| 亚洲欧美国产精品| 精品国产欧美一区二区五十路| 亚洲国产女人aaa毛片在线| 亚洲国产精彩中文乱码av| 日韩一区二区三区在线播放| 国产精品天天狠天天看| 久久福利网址导航| 成人羞羞国产免费| 一个人看的www欧美| 欧美亚洲另类在线| 日韩动漫免费观看电视剧高清| www.欧美三级电影.com| 国产日产亚洲精品| 久久久亚洲影院你懂的|