JavaScript 字符串的值和长度
■知识点
使用字符串的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; }
}
点击加载更多评论>>