在JS 编写一个方法求一个字符串的字节长度,假设:一个英文字符占用一个字节,一个中文字符占用两个字节。
时间: 2024-03-21 10:39:00 浏览: 115
可以使用正则表达式,先将所有中文字符替换成两个英文字符,再计算字符串的长度即可。代码如下:
```javascript
function byteLength(str) {
// 将中文字符替换成两个英文字符,计算字符串长度
return str.replace(/[^\x00-\xff]/g, 'aa').length;
}
```
测试一下:
```javascript
console.log(byteLength('hello')); // 5
console.log(byteLength('你好')); // 4
console.log(byteLength('hello你好')); // 9
```
注意,这个方法只是估算一个字符串的字节长度,并不是绝对准确的。因为不同编码下,同一个字符的字节数可能会不同。
相关问题
Js编写一个方法,求一个字符串的长度,单位是字节
在JavaScript中,你可以创建一个名为`getByteLength`的方法来计算字符串的字节长度,因为UTF-8编码是JavaScript默认的字符编码。不过需要注意的是,这种方法并不包括字符串中的BOM(Byte Order Mark),如果需要考虑这个特殊情况,你需要额外处理。
以下是一个简单的实现示例:
```javascript
function getByteLength(str) {
// UTF-8每个字符的字节数范围是1到4
let byteLength = str.length * 1; // 最常见的情况,英文字符占用1字节
// 检查是否有非ASCII字符,如果有,则可能需要2到4字节
for (let i = 0; i < str.length; i++) {
const charCode = str.charCodeAt(i);
if (charCode > 0x7F) { // ASCII码范围是0-127,超过的就是非ASCII字符
if (charCode <= 0x7FF) { // 这些字符占2字节
byteLength += 2;
} else if (charCode <= 0xFFFF) { // 更复杂的字符占3字节
byteLength += 3;
} else { // Unicode补充计划部分,占4字节
byteLength += 4;
}
}
}
return byteLength;
}
// 使用示例
const string = "你好,世界!";
console.log(getByteLength(string)); // 输出实际字节长度
编写一个计算字符串长度的子程序,字符串以0结尾。入口参数:字符串的首地址指针为DS:SI;出口地址:在AX中返回字符串的长度。写出子程序部分即可
以下是计算字符串长度的子程序代码:
```
STRLEN PROC NEAR
XOR AX, AX ; 将 AX 清零
MOV CX, 0FFFFh ; 将 CX 初始化为最大值,用于循环计数
MOV DI, SI ; 将 DI 初始化为字符串首地址
REPNE SCASB ; 逐个比较字符串中的字符,直到遇到 0
NOT CX ; 取反 CX,得到字符串长度
DEC CX ; 减去结尾 0 占用的一个字节
MOV AX, CX ; 将字符串长度存入 AX
DEC SI ; 将指针指向字符串最后一个字符
RET
STRLEN ENDP
```
该子程序使用 REPNE SCASB 指令来逐个比较字符串中的字符,直到遇到 0 结尾。循环计数器 CX 初始化为最大值,这样当遇到 0 时,CX 的值就是字符串长度。然后将 CX 取反,减去结尾 0 占用的一个字节,并存入 AX 中。最后将指针指向字符串最后一个字符,即结尾 0 的前一个字符,以便在调用该子程序后继续操作字符串。
阅读全文