Dav*_*ked 9 string utf-8 julia
Julia的入门指南,Y Minutes中的Learn 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).
Run Code Online (Sandbox Code Playgroud)
为什么不鼓励迭代这些字符串呢?具体关于这种备用字符串类型的结构会使索引错误?这是Julia特定的陷阱,还是扩展到所有支持UTF8字符串的语言?
gol*_*lum 12
因为在UTF8中,字符并不总是以单个字节编码.
以德语字符串böse(邪恶)为例.UTF8编码中此字符串的字节数为:
0x62 0xC3 0xB6 0x73 0x65
b ö s e
Run Code Online (Sandbox Code Playgroud)
正如您所见,变音符号ö需要2个字节.
现在如果你直接索引这个UTF8编码的字符串"böse"[4]将给你s而不是e.
但是,您可以在julia中将字符串用作可迭代对象:
julia> for c in "böse"
println(c)
end
b
ö
s
e
Run Code Online (Sandbox Code Playgroud)
既然你问过,不,UTF8字符串的直接字节索引问题并不是特定于Julia.
建议进一步阅读:http:
//docs.julialang.org/en/release-0.4/manual/strings/#unicode-and-utf-8
| 归档时间: |
|
| 查看次数: |
787 次 |
| 最近记录: |