【发布时间】:2015-01-07 20:20:46
【问题描述】:
let str1 = "????????????????????????????????????????"
let str2 = "????????.????????.????????.????????.????????."
println("\(countElements(str1)), \(countElements(str2))")
结果:1、10
但是str1不应该有5个元素吗?
这个错误似乎只在我使用标志表情符号时出现。
【问题讨论】:
-
是的,这很奇怪。我尝试了不同的表情符号,只有标记表情符号会导致这种情况。即使使用没有空格的不同标志也会导致这种情况。
-
这对我来说似乎是一个错误。 “??????”是由区域指示符符号字母 D 和区域指示符符号字母 E 组合而成的“扩展字素簇”,并计为单个字符,但“????????????????????? ??????????????????”应该是 5 个字符。甚至 ”???????????????????????????????????????????????? ?????????”给出一个字符数。也许对 Unicode 标准比较了解的人可以解释一下。
-
似乎任意序列的“区域指示符号字母”被视为单个字素簇。例如,
let str1 = "\u{1F1E6}\u{1F1E7}\u{1F1E8}\u{1F1E9}\u{1F1EA}\u{1F1EB}"打印为????????????????????????但算作单个字符。 -
有趣的是,
str1.startIndex.successor() == str1.endIndex
标签: ios swift unicode emoji countelements