gpt4 book ai didi

python - Python 中的字符长度为 1,而 Kotlin 中的字符长度为 2

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

我在 Kotlin 中迭代一个字符串,并注意到 Kotlin 将某个中文字符视为长度为 2。相同的字符在 Python 3.8 中的长度为 1。

Kotlin :

>>> "𫷷".length
2

Python:
>>> len("𫷷")
1

为什么会这样?如何逐个字符地迭代 Kotlin 中的字符串?

最佳答案

您正在处理代理对。代理对是 UTF 对某些字符进行编码的方式。

那𫷷不能表示为一个Char .您可以通过尝试将其定义为 char 文字来检查这一点。

val someChar = '𫷷' // Error: Too many character in character literal "𫷷"

那么如何正确计算呢? Kotlin 的标准库有一个函数( hasSurrogatePairAt ),您可以将其放入这样的扩展函数中:
fun String.countSurrogatePairs() = withIndex().count {
hasSurrogatePairAt(it.index)
}

用法:
println("𫷷".countSurrogatePairs()) // 1
println("𫷷𫷷".countSurrogatePairs()) // 2

所以,Python 似乎已经处理好了。

关于python - Python 中的字符长度为 1,而 Kotlin 中的字符长度为 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59893197/

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