位置:首頁(yè) > 軟件操作教程 > 編程開發(fā) > JavaScript > 問題詳情

JavaScript 字符串的值和長(zhǎng)度

提問人:劉團(tuán)圓發(fā)布時(shí)間:2020-11-24

■知識(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; }

}

繼續(xù)查找其他問題的答案?

相關(guān)視頻回答
回復(fù)(0)
返回頂部