JavaScript 字符串的值和長(zhǎng)度
■知識(shí)點(diǎn)
使用字符串的toString()方法可以返回字符串的字符表示,使用valueOfO方法可以返回字符串的值。兩個(gè)方法的返回值始終相同,所以一般不用直接調(diào)用這兩個(gè)方法。
使用字符串的length屬性可以讀取字符串的長(zhǎng)度。長(zhǎng)度以字符為單位,該屬性為只讀屬性。
■實(shí)例設(shè)計(jì)
【示例1】可以重寫toString()和valueOfO方法,以便個(gè)性化顯示字符串。
//重寫tostring ()原型方法,參數(shù)color表示顯示顏色
String.prototype.toString = function(color){
var color = color | | "red"; //如果省略參數(shù),則顯不為紅色
return '<span style="color:' + color + '";>' + this.valueOf() + '</span>';
//返回格式化顯示帶有顏色的字符串
}
document.write (s.toString () ) ; //顯不紅色字符串"JavaScript”
document.write (s.toString ("blue") ) ; //顯不藍(lán)色字符串"JavaScript”
上面的示例重寫toString()方法,可以以HTML格式化方式顯示字符串的值。
【示例2】為String擴(kuò)展原型方法byteLength(),該方法將枚舉每個(gè)字符,并根據(jù)字符編碼,判斷當(dāng)前字符是單字節(jié)還是雙字節(jié),然后統(tǒng)計(jì)字符串的字節(jié)長(zhǎng)度。
String.prototype.byteLength = function ( ) { //獲取字符串的字節(jié)數(shù),辦展 String 類型方法
var b = 0, 1 = this.length; //初始化字節(jié)數(shù)遞加變量,并獲取字符串參數(shù)的字符個(gè)數(shù)
if ( 1 ) { //如果存在字符串,則執(zhí)行計(jì)算
for ( var i = 0; i < 1; i ++ ) { //遍歷字符串,枚舉每個(gè)字符
if (this.charCodeAt ( i ) > 255 ){ //字符編碼大于255,說明是雙字節(jié)字符
b += 2; //則累加2個(gè)
}else{
b ++ ; //否則遞加一次
}
}
return b; //返回字節(jié)數(shù)
}else{
return 0; //如果參數(shù)為空,則返回0個(gè)
}
}
應(yīng)用原型方法:
var s = "String類型長(zhǎng)度"; //定義字符串直接量
console.log(s.byteLength()) //返回14
■小結(jié)
在檢測(cè)字符是否為雙字節(jié)或單字節(jié)時(shí),下面再提供兩種設(shè)計(jì)思路。
for( var i = 0; i < 1; i ++ ){
var c = this.charAt ( i ) ; //獲取當(dāng)前字符
if ( escape( c ).length > 4 ){ //如果字符的轉(zhuǎn)義序列大于4位,說明是雙字節(jié)
b += 2;
}else if( c != "\r") { b ++ ; }
}
或者使用正則表達(dá)式進(jìn)行字符編碼驗(yàn)證。
for( var i = 0; i < 1; i ++ ){
var c = this.charAt( i );
if ( /^[\u0000-\u00ff]$/.test(c) ) { //其中/^[\u000-\u00ff]$/表示匹配單字節(jié)字符
b ++ ;
}else { b += 2; }
}
點(diǎn)擊加載更多評(píng)論>>