gpt4 book ai didi

用于在 UTF8 和 UTF16 偏移量之间转换的 Java 代码(Java 字符串偏移量与 Python 3 字符串偏移量之间的转换)

转载 作者:行者123 更新时间:2023-12-02 06:12:04 26 4
gpt4 key购买 nike

给定一个 Java 字符串和该字符串的偏移量,计算同一位置到 UTF8 字符串的偏移量的正确方法是什么?

更具体地说,给定 Java 字符串中有效代码点的偏移量,如何将该偏移量映射到 Python 3 字符串中该代码点的新偏移量?反之亦然?

是否有任何库方法已经提供了 Java 字符串偏移量和 Python 3 字符串偏移量之间的映射?

最佳答案

Java中正确的方法是使用codePointCount :

String sample = "😵 - abc";
int javaIndex = sample.indexOf("abc");
int codePointIndex = sample.codePointCount(0, javaIndex);

System.out.println(javaIndex);
System.out.println(codePointIndex);

输出:

5
4

虽然 Java 的 UTF-16 格式是一种可变长度格式,并且表情符号需要两个 char,但根据 Unicode 标准,它只是一个代码点。因此 abc 的 Java 索引为 5,但代码点索引(也适用于 Python 3 字符串)为 4。

请注意,正如方法名称所暗示的那样,Java 方法需要对代码点进行一一计数。所以它不是一个封闭的数学公式。

关于用于在 UTF8 和 UTF16 偏移量之间转换的 Java 代码(Java 字符串偏移量与 Python 3 字符串偏移量之间的转换),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57345598/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com