如何将字节偏移量从sqlite FTS查询转换为java中的字符偏移量
发布时间:2020-12-12 18:54:26 所属栏目:百科 来源:网络整理
导读:我有一个问题,我在 android中搜索我的FTS表,我得到结果返回一个字节偏移量: col termno byteoffset size1 0 111 4 但问题是,当使用cursor.getString(colNo)时,它给了我一个UTF-16字符串,之后我无法统计文本的哪个字符是匹配的开始/结束. 它的类似问题是:De
我有一个问题,我在
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,byteOffset,"UTF-8"); String match = new String(bytes,size,"UTF-8"); int charOffset = prefix.length; int charSize = match.length; (假设您的数据被编码为UTF-8字节,这很可能.) 遗憾的是,您必须完成所有这些冗余编码和解码.或许值得添加优化来缩短纯ASCII常见情况. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |