在日常开发中,会遇见根据字符真实长度进行特殊处理的场景,但中文字符和英文字符长度是不一样的,今天记录一个小方法,可以方便统计一段字符的真实长度
const getChartLength = (str: string) => {
return [...str].reduce((acc, char) => char.charCodeAt(0) > 127 ? acc + 2 : acc + 1,0);
}
getChartLength('asd') //3
getChartLength('as,') //3
getChartLength('好的') //4
getChartLength('好,') //4
- es6的字符具有迭代器接口,因此[...str]可以获取一个字符数组
- 字符编码在127以内可以认为是英文字符
- 字符编码超过127且小于255的字符属于扩展ASCII字符集,属于一些特殊字符,图形符号和重音节字符,这里可以当做双字节统计
分享两个String的静态方法
- String.fromCharCode(num)
- 根据编码返回特定的字符
- num为0~0xffff(65535)字符编码
- String.fromCodePoint(num)
- 同fromCharCode方法
- num为0~0x10ffff(1114111)字符编码
- str.charCodeAt(index)
- index 字符索引
- 获取给定字符的编码(0~0xffff)
- 超过0xffff,获取不完整的编码
- str.codePointAt(index)
- index 字符索引
- 获取完整的编码(0~0x10ffff)
p: 中文字符编码范围 0x4E00-0x9FFF
本文暂时没有评论,来添加一个吧(●'◡'●)