Welcome to Swift (苹果官方Swift文档初译与注解十八)---116~122页(第二章)

Strings and Characters (字符串和字符)框架

  字符串是一组字符组成的序列,例如“hello, world" 或 "albatross”.在Swift中,字符串使用String类型进行声明,它表明一组由Character(字符)类型组成的值的序列.函数

  String类型和Character类型提供了一种在代码中处理 (兼容Unicode) 文本的快速方式.字符串建立和管理的语法与C语言的类似,都属于轻量级而且可读性好.字符串的拼接只是简单的  使用加号(+)操做符,并且字符串的变化部分能够根据常量或者变量来选择处理.ui

  尽管语法简易,但Swift的String类型仍是提供了现代的,快速的关于字符的处理工做.每一个字符串都是由Unicode字符组成,并能够访问这些字符.this

  字符串中也能够插入常量,变量,文本和表达式.这使得创建个性化的字符串来显示,存储以及保持更加容易.spa

  注意点:scala

  Swift中的Sting类型与OC中Foundation的NSString类是无缝桥接的.若是你正在使用Cocoa或者Cocoa Touch的Foundation框架,那么全部调用的NSString API均可以使用String值.也  能够使用String类型值来匹配任何NSString实例的API.code

String Literals (字符串文本)字符串

  在你的代码中,能够包含预先定义的String值(字符串文本),它是使用一组双引号(“”)括住的一个固定文本字符的序列.编译器

  字符串文本能够用了初始化一个常量或变量:string

    let someString = "Some string literal value

  因为使用了String类型字符文原本给常量 someString进行初始化,所以Swift能够检查出常量的类型.

  字符串文本能够包含下面特殊的字符:

  • 转义的特殊字符 \0 (空字符), \\ (反斜线), \t (水平制表符), \n (换行), \r (回车), \" (双引号) 和 \' (单引号)
  • 单字节的Unicode 符号 , 写为 \xnn,  其中nn 是两个十六进制数字
  • 双字节 Unicode 符号, 写为 \unnnn, 其中 nnnn 是四个十六进制数字
  • 四字节 Unicode 符号, 写为 \Unnnnnnnn, 其中 nnnnnnnn 是八个十六进制数字

  下面的代码演示了每种特殊字符的样例.常量wiseWords包含两个转义字符双引号(”),常量dollarSign, blackHeart, 和 sparklingHeart演示了其余不一样的Unicode字符格式:

    let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"

    // "Imagination is more important than knowledge" - Einstein

    let dollarSign = "\x24"        // $,  Unicode scalar U+0024

    let blackHeart = "\u2665"      // ♥,  Unicode scalar U+2665

    let sparklingHeart = "\U0001F496"  // 💖, Unicode scalar U+1F496

    Initializing an Empty String (初始化一个空字符串)

  建立一个空值的字符串,能够经过两种方式:给变量赋值一个空的文本字符串,或者使用初始化语法来初始化一个新的String实例:

    var emptyString = ""               // 空字符文本

    var anotherEmptyString = String()  // 初始化语法

    // these two strings are both empty, and are equivalent to each other

  经过查看它们的布尔属性isEmpty来肯定一个字符串的值是否为空:

    if emptyString.isEmpty {

        println("Nothing to see here")

    }

    // prints "Nothing to see here”

String Mutability (可变字符串)

  若是但愿一个指定的字符串能够被修改(或可变化),那么能够把它赋值给一个变量;若是但愿字符串不被改变,那么把它赋值给一个常量:

    var variableString = "Horse"

    variableString += " and carriage"

    // variableString is now "Horse and carriage"

 

    let constantString = "Highlander"

    constantString += " and another Highlander"

    // this reports a compile-time error - a constant string cannot be modified”

  注意点:

  这与OC中和Cocoa的可变字符串不一样;OC中一个字符串是否可变,是经过中两个类之间选择 (NSString 和NSMutableString )

Strings Are Value Types (字符串本值类型)  /*Value Type:笔者自译为:本值类型,参考时请注意!可能有误*/

  在Swift中,字符串类型是一种本值类型.若是你建立一个新的字符串值,当把它传递给一个函数或者方法时,或将它赋值给一个变量或者常量时,会创建这个字符串值的一个拷贝副本.并  且传递和赋值都是使用这个副本而非原值.

  注意点:

  Swift中字符串的这种行为是与Cocoa的NSString方式不一样.在Cocoa中建立的NSString实例,传递给函数或者方法,或者赋值给变量,都是传递这个NSString的一个引用,而不是     NSString的拷贝副本(除非你明确的指定要求副本拷贝).

  Swift的默认拷贝(copy-by-default)字符串方式是为了确保当一个方法或函数传给你一个字符串值的时候,没必要关心这个值具体是从哪里来,均可以确切的保留这个字符串(没有被改变,  除非你亲自修改了它).

  在后台,Swift的编译器会自动选择字符串的用法,这样保证字符串的副本拷贝行为只在必须的时候才会执行.这就意味着你使用字符串的时候能够得到很是高的效率.

/********************待续......************************/

相关文章
相关标签/搜索