在个人的demo或者项目中很普遍的需要对文本框中输入的内容进行字节长度的限制,例如名称输入框的20个字节限制等等,所以需要封装一个函数来获取字符串所占的字节长度,便于复用
1. 需要知道字节的长度是怎么来判断的,字符串中数字、英文、空格等都会被算作一个字节,一个中文算作两个字节
2.区别开一个字节和两个字节的字符 可以使用charCodeAt()方法来判断
charCodeAt() 方法可返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。
如果当前字符 的 Unicode 编码 > 255 ,表示这个字符占两个字节,相反如果 当前字符的 Unicode 编码 <= 255, 表示占一个字节。 现在判断条件知道了,可以开始写代码了
// 获取字符串所占的字节长度
function byteLength (str) {
let count = 0
// 遍历获取输入字符串的每一个字符
for (let i = 0;i<str.length;i++) {
// 这里对字符串中每一个字符进行判断
const byte = str.charCodeAt(i)
// 如果Unicode编码>255,占两个字符,字节长度+=2 反之占一个字符,+=1
if (byte > 255) {
count +=2
} else {
count ++
}
}
// 返回所占字节长度
return count
}
byteLength('1') // 1
byteLength('字节') // 4
如有不足欢迎补充