HarmonyOS 鸿蒙Next怎么获取字符串的字节长度

发布于 1周前 作者 h691938207 来自 鸿蒙OS

HarmonyOS 鸿蒙Next怎么获取字符串的字节长度

例如
字符串:N743356,N234260,测试02113213土狗反光衣12
获取到的字节长度为47
ios可以通过string 转char *类型,得出字节 strlen()长度为47
请问一下,鸿蒙需要怎么转换才能得出字节长度

5 回复

可以参考以下方案 API参考链接: https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-util-0000001813575992-V5#ZH-CN_TOPIC_0000001834300412__textencoder</p

import util from '[@ohos](/user/ohos).util';

[@Entry](/user/Entry)
[@Component](/user/Component)
struct Index {
 [@State](/user/State) message: string = 'Hello World';

 build() {
   Row() {
     Column() {
       Text(this.message)
         .fontSize(50)
         .fontWeight(FontWeight.Bold)
         .onClick(() => {
           let str = 'abcd哦#'
           let that = new util.TextEncoder("utf-8");
           let buffer = new ArrayBuffer(str.length * 5);
           let dest = new Uint8Array(buffer);
           let result = that.encodeIntoUint8Array(str, dest);
           console.info('written: ' + result.written);
           console.info('result: ' + JSON.stringify(result));
         })
     }
     .width('100%')
   }
   .height('100%')
 }
}

string 的length属性不可以用吗

let  str:string="N743356,N234260,测试02113213土狗反光衣12";
console.log("EricXie",buffer.byteLength(str))

在鸿蒙系统里面去取字符串的字节长度的话

你可以像类似IOS那种strlen函数的办法

可以先将字符串转换为字节数组    接着再计算字节数组的长度

有一个示例代码你可以看看

import java.nio.charset.StandardCharsets;

public class StringLengthInBytes { public static void main(String[] args) { String str = “N743356,N234260,测试02113213土狗反光衣12”; byte[] bytes = str.getBytes(StandardCharsets.UTF_8); int byteLength = bytes.length; System.out.println("字符串的字节长度为: " + byteLength); } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

在HarmonyOS(鸿蒙)系统中,获取字符串的字节长度通常涉及到字符编码的考虑,因为不同的编码方式(如UTF-8、UTF-16等)会导致字符串占用的字节数不同。以下是在Java(HarmonyOS应用开发常用语言之一)中获取字符串字节长度的基本方法,假设你使用的是UTF-8编码:

String str = "你的字符串";
try {
    // 将字符串转换为字节数组,指定字符集为UTF-8
    byte[] bytes = str.getBytes("UTF-8");
    // 获取字节数组的长度,即字符串的字节长度
    int byteLength = bytes.length;
    System.out.println("字符串的字节长度(UTF-8):" + byteLength);
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
    // 理论上UTF-8是广泛支持的,这里捕获异常主要是为了代码健壮性
}

注意,String.getBytes(Charset charset)方法会根据指定的字符集将字符串转换为字节数组,然后你可以通过获取字节数组的长度来得知字符串在该字符集下的字节长度。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部