js字符串的长度

JavaScript012

js字符串的长度,第1张

字符串的最大长度与js中能表达的【最大安全整数】有关系,这是为什么呢

utf-16相关:

符号位1 指数为11 位位尾数位52 (1+11+52=64)

那应该是2^52-1 才对,但小数点前保留一位规格化后始终是1.***这个不需要存,所以这样就成了2^53-1

我理解是:只要转码后的二进制总长度不超出2^53-1就行,但是不一样的编码方式转码后的二进制长度不相同,所以字符串最大字符长度受字符串编码方式影响

负数求二进制

例:-14

原码->反码->补码

原码0000 1110 (14= 2^3 + 2^2 + 2^1)

反码 1111 0001(按位取反)

补码 1111 0010(反码加一)

小数二进制

例:1.5的二进制1.1,二进制1.1反推回去:1 * 2^0 + 1 * 2^(-1)=1.5

因为中文字占两个字节,英文占一个字节。

方法1:把中文字替换成两个字母。然后计算长度。

方法2:直接判断中文,长度+2。

运用的方法大同小异。都是通过正则表达式,写unicode编码。

方法1中

[\u4e00-\u9fa5]:匹配中文字符

[^\x0000-\x00ff]:匹配双字节字符(包括中文字)

正则表达示 /[\u4e00-\u9fa5]/g 的 g 必须要,global,全部都要检查的意思。没有的话输出的是(2333aa哈)

方法2中的函数

扩展:

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

下面代码使用字符串的 length 属性获取字符串的长度。

var s = "String 类型长度" //定义字符串

console.log(s.length) //返回10个字符

JavaScript 支持的字符包括单字节、双字节两种类型,为了精确计算字符串的字节长度,可以采用下面方法来计算。