【发布时间】:2016-02-02 16:24:09
【问题描述】:
Julia 的介绍性指南 Learn Julia in Y Minutes 不鼓励用户索引 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 字符串的语言?
【问题讨论】:
-
由于 UTF-8 是 Unicode 的多字节编码,因此索引到 UTF-8 字符串或获取长度(以字符而不是代码单元为单位)是 O(n) (其中 n 是字符串的大小)操作。如果你需要经常做这样的事情,你最好使用 UTF32String,并根据需要转换为/从 UTF8。这不是 Julia 特有的陷阱,但是像 Python 3 这样的一些语言可以为 Unicode 字符串选择最佳的内部表示,根据字符串的不同,索引仍然是 O(1)。
-
@ScottJones 感谢您的提示。 UTF32String(类似于 C++ 中的
std::wstring)是我真正需要的。