位置:首页 > 软件操作教程 > 编程开发 > JavaScript > 问题详情

JavaScript 字符串的值和长度

提问人:刘团圆发布时间:2020-11-24

■知识点

使用字符串的toString()方法可以返回字符串的字符表示,使用valueOfO方法可以返回字符串的值。两个方法的返回值始终相同,所以一般不用直接调用这两个方法。

使用字符串的length属性可以读取字符串的长度。长度以字符为单位,该属性为只读属性。

■实例设计

【示例1】可以重写toString()和valueOfO方法,以便个性化显示字符串。

//重写tostring ()原型方法,参数color表示显示颜色 

String.prototype.toString = function(color){

    var color = color | | "red";       //如果省略参数,则显不为红色

    return '<span style="color:' + color + '";>' + this.valueOf() + '</span>';

                                              //返回格式化显示带有颜色的字符串

}

document.write (s.toString () ) ;       //显不红色字符串"JavaScript”

document.write (s.toString ("blue") ) ;     //显不蓝色字符串"JavaScript”

上面的示例重写toString()方法,可以以HTML格式化方式显示字符串的值。

【示例2】为String扩展原型方法byteLength(),该方法将枚举每个字符,并根据字符编码,判断当前字符是单字节还是双字节,然后统计字符串的字节长度。

String.prototype.byteLength = function ( ) { //获取字符串的字节数,办展 String 类型方法

    var b = 0, 1 = this.length;                 //初始化字节数递加变量,并获取字符串参数的字符个数

    if ( 1 ) {                                 //如果存在字符串,则执行计算

        for ( var i = 0; i < 1; i ++ ) { //遍历字符串,枚举每个字符

             if (this.charCodeAt ( i ) > 255 ){ //字符编码大于255,说明是双字节字符

                     b += 2;                    //则累加2个

             }else{

                     b ++ ;                     //否则递加一次

                   }

             }

             return b;                          //返回字节数

          }else{

             return 0;                          //如果参数为空,则返回0个

          }

}

应用原型方法:

var s = "String类型长度";        //定义字符串直接量

console.log(s.byteLength())      //返回14

■小结

在检测字符是否为双字节或单字节时,下面再提供两种设计思路。

for( var i = 0; i < 1; i ++ ){

    var c = this.charAt ( i ) ;         //获取当前字符

    if ( escape( c ).length > 4 ){ //如果字符的转义序列大于4位,说明是双字节

        b += 2;

    }else if( c != "\r") { b ++ ; }

}

或者使用正则表达式进行字符编码验证。

for( var i = 0; i < 1; i ++ ){

    var c = this.charAt( i );

    if ( /^[\u0000-\u00ff]$/.test(c) ) { //其中/^[\u000-\u00ff]$/表示匹配单字节字符

        b ++ ;

    }else { b += 2; }

}

继续查找其他问题的答案?

相关视频回答
回复(0)
返回顶部