字符串索引在swift中

时间:2017-10-24 16:05:30

标签: swift

使用indices属性可以访问字符串中各个字符的所有索引。 参考Swift文档。

let greeting = "Guten Tag!"

for index in greeting.indices {
    print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n   T a g ! "

但是当我尝试

for index in greeting {
    print("\(index) ", terminator: "")
}
// Prints "G u t e n   T a g ! "

那有什么区别?

2 个答案:

答案 0 :(得分:0)

在第一个代码块中,fast enumeratingindices字符串的greetingIndices是对升级订阅有效的索引,按升序排列。当您快速枚举indices时,每个元素都是index,实际上是String.Index,您可以使用此String.Index来访问每个元素(Character你的字符串变量。

第二个代码块,您快速enumerating字符串的elementCharacter)本身。看到不同之处非常简单。

按AltOption +左键单击循环中的变量index以查看魔法。

希望这有帮助!

答案 1 :(得分:0)

在第一种方法中,即

    for index in greeting.indices
    {
        print("\(greeting[index]) ", terminator: "")
    }
indices上使用

greeting属性来获取与字符串greeting对应的所有有效索引。

greeting.indices 
  

对订阅集合有效的索引   升序。

然后对所有返回的有效索引执行fast enumeration,以使用下标访问问候语的每个元素,即

greeting[index]

在第二种方法中,即

    for index in greeting
    {
        print("\(index) ", terminator: "")
    }

在上面的代码中,fast enumeration在字符串本身上执行,它在greeting的每个元素上循环。由于元素是直接返回的,因此不需要使用下标。

这是可能的,因为String也是Collection,因此支持几乎所有可用于Collection的API。