UTF-8字符串数组使用图形元素与分割的区别

4

使用 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。)

1个回答

7

根据您所需要的内容而定。 graphemes() 将返回用户感知为单个字符的内容,即使它们可能包含多个码点;例如,带有重音符号的字母是一个单一的字形。但对于 split() 不是这样。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接