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

首頁 > 編程 > regex > 正文

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

2020-01-20 22:19:37
字體:
來源:轉載
供稿:網友
先看看一下兩段代碼吧,它們分別用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
91久久精品国产91久久| 欧美大片在线影院| 亚洲激情 国产| 欧美高清理论片| 欧美激情xxxx性bbbb| 国产丝袜视频一区| 日韩成人xxxx| 久久久91精品| 亚洲国产成人精品女人久久久| 国产精品成av人在线视午夜片| 欧美日韩另类字幕中文| 久久福利视频导航| 日韩欧美亚洲一二三区| 欧美午夜视频一区二区| 欧美日韩精品二区| 亚洲免费成人av电影| 国产成人精品国内自产拍免费看| 亚洲人成电影网站色www| 久久久噜噜噜久噜久久| 97国产真实伦对白精彩视频8| 亚洲国产成人爱av在线播放| 米奇精品一区二区三区在线观看| 亚洲视频在线免费看| 亚洲一区二区三区777| 91香蕉国产在线观看| 久久国产精品久久国产精品| 国产精品白嫩美女在线观看| 国产一区二区三区四区福利| 日本韩国欧美精品大片卡二| 国产欧美韩国高清| 91免费的视频在线播放| 欧美日韩国产二区| 91精品91久久久久久| 亚洲成人中文字幕| 欧美激情第一页xxx| 日韩一区av在线| 亚洲a级在线播放观看| 色综合久综合久久综合久鬼88| 欧美乱人伦中文字幕在线| 日韩视频在线免费| 91免费福利视频| 2019精品视频| 亚洲精品视频在线播放| 日韩电视剧在线观看免费网站| 国产香蕉精品视频一区二区三区| 91国产高清在线| 亚洲美女av在线播放| 国产精品美女视频网站| 91精品久久久久久久久久久久久久| 日产日韩在线亚洲欧美| 成人亚洲激情网| 色yeye香蕉凹凸一区二区av| 欧美第一黄网免费网站| 欧美日韩国产一中文字不卡| 人人做人人澡人人爽欧美| 久久久久99精品久久久久| 色中色综合影院手机版在线观看| 欧美性生交xxxxx久久久| 国产欧美一区二区三区在线| 亚洲人成电影网站| 91久久久久久久久久久久久| 国产成人在线精品| 国产精品亚洲аv天堂网| 最近2019年好看中文字幕视频| 91社区国产高清| 国产主播欧美精品| 久久亚洲欧美日韩精品专区| xvideos亚洲人网站| 日韩精品欧美激情| 96sao精品视频在线观看| 国产小视频91| 亚洲欧美日韩爽爽影院| 国产精品揄拍一区二区| 欧美有码在线观看视频| 欧洲精品毛片网站| 九九热视频这里只有精品| 成人性生交大片免费看视频直播| 国产精品嫩草视频| 日日骚av一区| 亚洲精品日韩在线| 日韩美女主播视频| 亚洲国产成人久久综合一区| 北条麻妃一区二区三区中文字幕| 中文字幕精品av| 亚洲精品视频播放| 激情久久av一区av二区av三区| 亚洲综合av影视| 欧美精品久久久久久久免费观看| 久久久国产精品亚洲一区| 日韩欧美aaa| 亚洲精品久久久久中文字幕欢迎你| 91日本视频在线| 国产精品视频男人的天堂| 中文字幕亚洲无线码在线一区| 国产精品91在线| 亚洲网站在线播放| 欧美日韩福利在线观看| 美女久久久久久久久久久| 久久久伊人日本| 亚洲欧洲日韩国产| 亚洲国产又黄又爽女人高潮的| 亚洲色图校园春色| 欧美成人精品在线视频| 久久久久久久久久久av| 国产激情视频一区| 亚洲天堂色网站| 91香蕉国产在线观看| 国产精品青青在线观看爽香蕉| 欧美日韩国产丝袜美女| 国产91网红主播在线观看| 精品性高朝久久久久久久| 亚洲 日韩 国产第一| 国产va免费精品高清在线观看| 欧美日韩免费网站| 国产一区二区三区在线| 国产精品9999| 久久香蕉频线观| 日韩av中文字幕在线播放| 欧美又大又硬又粗bbbbb| 国产日韩欧美视频| 亚洲欧美国内爽妇网| 日韩精品中文字幕有码专区| 国内精品400部情侣激情| 欧美成人亚洲成人| 欧美激情中文网| 美女999久久久精品视频| 精品动漫一区二区三区| 亚洲国模精品一区| 国模叶桐国产精品一区| 国产成人精品视频在线观看| 成人国产精品一区二区| 国产亚洲精品综合一区91| 日韩欧美精品中文字幕| 在线午夜精品自拍| 欧美精品在线极品| 热99久久精品| 亚洲国产精品资源| 国产激情综合五月久久| 久久久亚洲成人| 久久精品电影网| 久久精品国产99国产精品澳门| 欧美激情影音先锋| 欧美亚洲日本网站| 欧美日韩在线视频一区| 久久久久久久久电影| 亚洲欧美日韩国产中文专区| 最新国产成人av网站网址麻豆| 亚洲第一网中文字幕| 91久久在线观看| 欧美性受xxx| 日韩视频―中文字幕| 精品国产视频在线| 亚洲aa中文字幕| 亚洲美女性视频| 亚洲xxxx做受欧美| 人妖精品videosex性欧美| 欧美黑人极品猛少妇色xxxxx| 伊人久久久久久久久久| 97精品国产97久久久久久| 免费av在线一区| 欧美wwwxxxx| 久久久久久久激情视频| 亚洲天堂一区二区三区| 色偷偷av一区二区三区乱|