arrays - 使用字素与分割的 UTF-8 字符串数组

标签 arrays string utf-8 julia

使用 graphemes 相对于 split 从 UTF-8 字符串创建数组是否有优势?

例如,请考虑以下内容:

# Define a UTF-8 string with a bunch of multibyte characters
s = "{(-n↑⍵÷⊃⊖⍵),⍨⍉1↓⍉∘.=⍨⍳n←1-⍨≢⍵}"

# Create an array using split
split(s, "")

# Create an array using graphemes (v0.4+)
collect(graphemes(s))

两种方法都会产生预期的输出。事实上,

split(s, "") == collect(graphemes(s))

返回true

这两种方法似乎始终产生相同的结果。无论是在性能、风格还是其他方面,一种方法通常优于另一种方法吗?

(请注意,graphemes 返回一个迭代器而不是数组,因此是 collect。)

最佳答案

取决于您要寻找的内容。 graphemes() 将返回用户认为是单个字符的内容,即使它们可能包含多个代码点;例如,字母与重音符号组合是一个单独的字素。 split() 的情况并非如此。

考虑 + ◌́ 。在此示例中,split() 将返回两个代码点作为单独的字符,而 graphemes() 将返回单个字符。

关于arrays - 使用字素与分割的 UTF-8 字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003177/

相关文章:

java - 将 Object[] 转换为 java 中的引用类型数组

java - Oracle 数据库返回的字符串与 MySql 不同

python - 如何使用循环检查字符串中的所有字符是否大写

从 Latin-1 到 UTF-8 的 MySQL 编码

ruby-on-rails - 将 "# coding: utf-8"添加到所有文件

Javascript 数组使用索引合并

更改数组大小会更改 STRCMP 的行为

javascript - JavaScript数组是如何存储在内存中的

c++ - C/C++ 字符串内存泄漏?

html - 在 Perl 中读写未知编码的 XML 文件?