gpt4 book ai didi

java - 如何将sqlite FTS查询中的字节偏移量转换为java中的字符偏移量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:56 25 4
gpt4 key购买 nike

我在 android 中搜索我的 FTS 表时遇到问题,结果返回了一个字节偏移量:

col     termno      byteoffset      size
1 0 111 4

但是问题是,当使用 cursor.getString(colNo) 时,它给了我一个 UTF-16 字符串,之后我无法计算文本的哪个字符是匹配。

这是一个类似的问题:Detect character position in an UTF NSString from a byte offset(was SQLite offsets() and encoding problem)

但是我无法理解问题的解决方案。那么在知道字节偏移量后,如何准确知道字符串中的字符偏移量(用于高亮显示)?

最佳答案

将您的字符串编码回 Sqlite 使用的相同编码,然后以字节形式提取您想要的部分并将它们转换回字符串:

String chars = cursor.getString(colNo);
byte[] bytes = chars.getBytes("UTF-8");
String prefix = new String(bytes, 0, byteOffset, "UTF-8");
String match = new String(bytes, byteOffset, size, "UTF-8");
int charOffset = prefix.length;
int charSize = match.length;

(假设您的数据编码为 UTF-8 字节,这是可能的。)

不幸的是,您必须进行所有这些冗余编码和解码。或许值得添加优化以简化纯 ASCII 常见情况。

关于java - 如何将sqlite FTS查询中的字节偏移量转换为java中的字符偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830202/

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