初始化空字符串


为了构造一个很长的字符串,可以创建一个空字符串作为初始值。可以将空的字符串字面量赋值给变量,也可以初始化一个新的String 实例:

1. var emptyString = ""               // 空字符串字面量
2. var anotherEmptyString = String()  // 初始化 String 实例
3. // 两个字符串均为空并等价。


您可以通过检查其 Boolean 类型的 isEmpty 属性来判断该字符串是否为空:

1. if emptyString.isEmpty {
2.     println("什么都没有")
3. }
4. // 打印输出:"什么都没有"


字符串可变性


您可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改:


    1. var variableString = "Horse"
    2. variableString += " and carriage"  // variableString 现在为 "Horse and carriage"
    3. let constantString = "Highlander"
    4. constantString += " and another Highlander" // 这会报告一个编译错误(compile-time error) - 常量不可以被修改。


    注意:在 Objective-C 和 Cocoa 中,您通过选择两个不同的类( NSString 和 NSMutableString )来指定该字符串是否可以被修改,Swift中的字符串是否可以修改仅通过定义的是变量还是常量来决定,实现了多种类型可变性操作的统一。

    字符串是值类型


    Swift 的 String 类型是值类型。如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值。值类型在 Structures and Enumerations Are Value Types 中进行了说明。


    注意:其 Cocoa 中的 NSString 不同,当您在 Cocoa 中创建了一个 NSString 实例,并将其传递给一个函数/方法,或者赋值给一个变量,您永远都是传递或赋值同一个 NSString 实例的一个引用。除非您特别要求其进行值拷贝,否则字符串不会进行赋值新副本操作。


    Swift 默认字符串拷贝的方式保证了在函数/方法中传递的是字符串的值,其明确了无论该值来自于哪里,都是您独自拥有的。您可以放心您传递的字符串本身不会被更改。


    在实际编译时,Swift编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着您始终可以将字符串作为值类型的同时获得极高的性能。


    使用字符(Characters)


    Swift 的 String 类型表示特定序列的字符值的集合。每一个字符值代表一个 Unicode 字符。您可利用 for-in 循环来遍历字符串中的每一个字符:

    1. for character in "Dog!" {
    2.     println(character)
    3. }
    4. // D
    5. // o
    6. // g
    7. // !


    for-in 循环在For Loops中进行了详细描述。


    另外,通过标明一个 Character 类型注解并通过字符字面量进行赋值,可以建立一个独立的字符常量或变量:

    1. let yenSign: Character = "¥"

    计算字符数量


    通过调用全局 countElements 函数并将字符串作为参数进行传递可以获取该字符串的字符数量。


    1. let unusualMenagerie = "Koala