Julia 的入门指南,在 Y 分钟内学习 Julia https://learnxinyminutes.com/docs/julia/,阻止用户索引 UTF8 字符串:
# Some strings can be indexed like an array of characters
"This is a string"[1] # => 'T' # Julia indexes from 1
# However, this is will not work well for UTF8 strings,
# so iterating over strings is recommended (map, for loops, etc).
为什么不鼓励迭代这样的字符串?这种替代字符串类型的结构具体是什么导致索引容易出错?这是 Julia 特有的陷阱,还是扩展到所有支持 UTF8 字符串的语言?
因为在 UTF8 中,字符并不总是以单个字节编码。
以德语字符串为例böse
(邪恶的)。
该字符串在UTF8编码下的字节为:
0x62 0xC3 0xB6 0x73 0x65
b ö s e
正如你所看到的元音变音ö
需要 2 个字节。
现在如果你直接索引这个UTF8编码的字符串"böse"[4]
会给你s
and not e
.
但是,您可以在 julia 中将字符串用作可迭代对象:
julia> for c in "böse"
println(c)
end
b
ö
s
e
既然您已经问过,不,UTF8 字符串的直接字节索引问题并不是 Julia 特有的。
进一步阅读建议:
http://docs.julialang.org/en/release-0.4/manual/strings/#unicode-and-utf-8 http://docs.julialang.org/en/release-0.4/manual/strings/#unicode-and-utf-8
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)