Swift2 Swift 2.0字符串行为

Swift2 Swift 2.0字符串行为,swift2,Swift2,2.0中的字符串不再符合集合类型。字符串中的每个字符现在都是扩展石墨烯簇 在没有深入挖掘集群内容的情况下,我尝试了一些使用快捷字符串的方法: 字符串现在有一个characters属性,它包含我们人类识别为字符的内容。字符串中的每个不同字符都被视为一个字符,count属性为我们提供不同字符的数量 我不太明白的是,即使字符计数显示10,为什么索引显示占据两个索引的表情?扩展石墨烯簇仍然可以占据多个字节,但是,确定字符索引位置的正确方法是: let mixed = ("MADE IN THE USA

2.0中的字符串不再符合集合类型。字符串中的每个字符现在都是扩展石墨烯簇

在没有深入挖掘集群内容的情况下,我尝试了一些使用快捷字符串的方法:

字符串现在有一个
characters
属性,它包含我们人类识别为字符的内容。字符串中的每个不同字符都被视为一个字符,
count
属性为我们提供不同字符的数量


我不太明白的是,即使
字符
计数显示
10
,为什么
索引
显示占据两个索引的表情?

扩展石墨烯簇仍然可以占据多个字节,但是,确定字符索引位置的正确方法是:

let mixed = ("MADE IN THE USA The 
index
of a
String
is no more related to the number of characters (
count
) in Swift 2.0. It is an “opaque”
struct
(defined as
CharacterView.Index
) used only to iterate through the characters of a string. So even if it is printed as an integer, it should not be considered or used as an integer, to which, for instance, you can sum 2 to get the second character from the current one. What you can do is only to apply the two methods
predecessor
and
successor
to get the previous or successive index in the
String
. So, for instance, to get the second character from that with index
idx
in
mixedString
you can do:

mixedString[idx.successor().successor()]

let mixed=(
String
index
与Swift 2.0中的字符数(
count
)不再相关。它是一个“不透明的”
struct
(定义为
CharacterView.index
)仅用于遍历字符串的字符。因此,即使它被打印为整数,也不应将其视为整数或用作整数,例如,您可以对其求和2以从当前字符中获取第二个字符。您所能做的只是应用两种方法
前置
后续
,以获取
字符串
中的上一个或后续索引。例如,要从
mixedString
中索引为idx的字符串中获取第二个字符,可以执行以下操作:

当然,您可以使用更方便的方式读取字符串的字符,例如
for
语句或全局函数
索引(quot:)

考虑到这种方法的主要好处不是将Unicode字符串中的多字节字符作为表情符号,而是以统一的方式(对于我们人类!)将可以在Unicode中具有多个表示形式的相同字符串视为不同的“标量集”,或字符。例如,
café
,可以用四个Unicode“标量”(Unicode字符)或五个Unicode标量表示。请注意,这与UTF-8、UTF-16等Unicode表示完全不同,后者是将Unicode标量映射到内存字节的方法