以下两个代码实际上做了同样的事情
characters
然而,当我检查感觉背后的更多细节信息时,我发现了差异。 CharacterView
属性的类型为unicodeScalars
,而UnicodeScalarView
的类型为abc.pdf
。
问题:
他们之间有什么区别?
哪种情况适合哪种情况? (举个例子会很高兴)
非常感谢
答案 0 :(得分:1)
这归结为Character
和UnicodeScalar
之间的区别。
Unicode Scalars
在幕后,Swift的原生String类型是根据Unicode标量值构建的。 Unicode标量是字符或修饰符的唯一21位数字,例如U + 0061表示LATIN SMALL LETTER A(“a”),或U + 1F425表示FRONT-FACING BABY CHICK(“”)。
...
扩展的Grapheme集群
Swift的Character类型的每个实例代表一个扩展的字形集群。扩展字形集群是一个或多个Unicode标量的序列(当组合时)生成单个人类可读字符。
这是一个例子。字母é可以表示为单个Unicode标量é(LATIN SMALL LETTER E WITH ACUTE,或U + 00E9)。但是,同一个字母也可以表示为一对标量 - 标准字母e(LATIN SMALL LETTER E或U + 0065),然后是COMBINING ACUTE ACCENT标量(U + 0301)。 COMBINING ACUTE ACCENT标量以图形方式应用于其前面的标量,当它由支持Unicode的文本呈现系统呈现时,将e转换为é。
来自Strings and Characters的Swift Programming Language Guide部分。
在大多数情况下,我可以想到你会想要处理Character
个实例,因为它们是人类语言的最小单位。我无法想象你想要在没有考虑完整的扩展字形集群的情况下操作修饰符的情况。