String类型的CharacterView和UnicodeScalarView之间有什么不同

时间:2016-08-18 14:26:00

标签: swift string unicode

以下两个代码实际上做了同样的事情

characters

然而,当我检查感觉背后的更多细节信息时,我发现了差异。 CharacterView属性的类型为unicodeScalars,而UnicodeScalarView的类型为abc.pdf

问题

他们之间有什么区别?

哪种情况适合哪种情况? (举个例子会很高兴)

非常感谢

1 个答案:

答案 0 :(得分:1)

这归结为CharacterUnicodeScalar之间的区别。

  

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 CharactersSwift Programming Language Guide部分。

在大多数情况下,我可以想到你会想要处理Character个实例,因为它们是人类语言的最小单位。我无法想象你想要在没有考虑完整的扩展字形集群的情况下操作修饰符的情况。