3.字符串和字符

上传人:第*** 文档编号:34254240 上传时间:2018-02-22 格式:DOCX 页数:12 大小:35.40KB
返回 下载 相关 举报
3.字符串和字符_第1页
第1页 / 共12页
3.字符串和字符_第2页
第2页 / 共12页
3.字符串和字符_第3页
第3页 / 共12页
3.字符串和字符_第4页
第4页 / 共12页
3.字符串和字符_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《3.字符串和字符》由会员分享,可在线阅读,更多相关《3.字符串和字符(12页珍藏版)》请在金锄头文库上搜索。

1、The Swift Programming Language 中文版 About the author Questions and Issues Edit and Contribute Introduction 1. 欢迎使用 Swifto 1.1. 关于 Swifto 1.2. Swift 初见 2. Swift 教程o 2.1. 基础部分o 2.2. 基本运算符o 2.3. 字符串和字符o 2.4. 集合类型o 2.5. 控制流o 2.6. 函数o 2.7. 闭包o 2.8. 枚举o 2.9. 类和结构体o 2.10. 属性o 2.11. 方法o 2.12. 下标脚本o 2.13. 继承o

2、 2.14. 构造过程o 2.15. 析构过程o 2.16. 自动引用计数o 2.17. 可选链o 2.18. 类型转换o 2.19. 嵌套类型o 2.20. 扩展o 2.21. 协议o 2.22. 泛型o 2.23. 高级操作符 3. 语言参考o 3.1. 关于语言参考o 3.2. 词法结构o 3.3. 类型o 3.4. 表达式o 3.5. 语句o 3.6. 声明o 3.7. 特性o 3.8. 模式o 3.9. 泛型参数o 3.10. 语法总结 Generated using GitBook翻译:wh1100717校对:Hawstein字符串和字符(Strings and Character

3、s)本页包含内容: 字符串字面量 初始化空字符串 字符串可变性 字符串是值类型 使用字符 计算字符数量 连接字符串和字符 字符串插值 比较字符串 字符串大小写 UnicodeString 是例如“hello, world”,“海贼王” 这样的有序的 Character(字符)类型的值的集合,通过 String 类型来表示。Swift 的 String 和 Character 类型提供了一个快速的,兼容 Unicode 的方式来处理代码中的文本信息。 创建和操作字符串的语法与 C 语言中字符串操作相似,轻量并且易读。 字符串连接操作只需要简单地通过 +号将两个字符串相连即可。 与 Swift 中

4、其他值一样,能否更改字符串的值,取决于其被定义为常量还是变量。尽管语法简易,但 String 类型是一种快速、现代化的字符串实现。 每一个字符串都是由独立编码的 Unicode 字符组成,并提供了以不同 Unicode 表示(representations)来访问这些字符的支持。Swift 可以在常量、变量、字面量和表达式中进行字符串插值操作,可以轻松创建用于展示、存储和打印的自定义字符串。注意:Swift 的 String 类型与 Foundation NSString 类进行了无缝桥接。如果您利用 Cocoa 或 Cocoa Touch 中的 Foundation 框架进行工作。所有 NS

5、String API 都可以调用您创建的任意 String 类型的值。除此之外,还可以使用本章介绍的String 特性。您也可以在任意要求传入 NSString 实例作为参数的 API 中使用String 类型的值作为替代。 更多关于在 Foundation 和 Cocoa 中使用String 的信息请查看 Using Swift with Cocoa and Objective-C。字符串字面量(String Literals)您可以在您的代码中包含一段预定义的字符串值作为字符串字面量。 字符串字面量是由双引号 () 包裹着的具有固定顺序的文本字符集。字符串字面量可以用于为常量和变量提供初始

6、值。let someString = Some string literal value注意:someString 常量通过字符串字面量进行初始化,Swift 因此推断该常量为String 类型。字符串字面量可以包含以下特殊字符: 转义字符 0(空字符)、 (反斜线)、 t(水平制表符 )、 n(换行符)、 r(回车符)、(双引号) 、 (单引号) 。 单字节 Unicode 标量,写成 xnn,其中 nn 为两位十六进制数。 双字节 Unicode 标量,写成 unnnn,其中 nnnn 为四位十六进制数。 四字节 Unicode 标量,写成 Unnnnnnnn,其中 nnnnnnnn 为八

7、位十六进制数。下面的代码为各种特殊字符的使用示例。 wiseWords 常量包含了两个转移特殊字符 (双括号) ; dollarSign、 blackHeart 和 sparklingHeart 常量演示了三种不同格式的 Unicode 标量:let wiseWords = 我是要成为海贼王的男人 - 路飞/ 我是要成为海贼王的男人 - 路飞let dollarSign = x24 / $, Unicode 标量 U+0024let blackHeart = u2665 / , Unicode 标量 U+2665let sparklingHeart = U0001F496 / , Unicod

8、e 标量 U+1F496初始化空字符串 (Initializing an Empty String)为了构造一个很长的字符串,可以创建一个空字符串作为初始值。 可以将空的字符串字面量赋值给变量,也可以初始化一个新的 String 实例:var emptyString = / 空字符串字面量var anotherEmptyString = String() / 初始化 String 实例/ 两个字符串均为空并等价。您可以通过检查其 Boolean 类型的 isEmpty 属性来判断该字符串是否为空:if emptyString.isEmpty println(什么都没有)/ 打印输出:什么都没有

9、字符串可变性 (String Mutability)您可以通过将一个特定字符串分配给一个变量来对其进行修改,或者分配给一个常量来保证其不会被修改:var variableString = HorsevariableString += and carriage/ variableString 现在为 Horse and carriagelet constantString = HighlanderconstantString += and another Highlander/ 这会报告一个编译错误 (compile-time error) - 常量不可以被修改。注意:在 Objective-C

10、 和 Cocoa 中,您通过选择两个不同的类( NSString 和NSMutableString)来指定该字符串是否可以被修改,Swift 中的字符串是否可以修改仅通过定义的是变量还是常量来决定,实现了多种类型可变性操作的统一。字符串是值类型(Strings Are Value Types)Swift 的 String 类型是值类型。 如果您创建了一个新的字符串,那么当其进行常量、变量赋值操作或在函数/方法中传递时,会进行值拷贝。 任何情况下,都会对已有字符串值创建新副本,并对该新副本进行传递或赋值操作。 值类型在 结构体和枚举是值类型 中进行了说明。注意:与 Cocoa 中的 NSStri

11、ng 不同,当您在 Cocoa 中创建了一个 NSString 实例,并将其传递给一个函数/方法,或者赋值给一个变量,您传递或赋值的是该NSString 实例的一个引用,除非您特别要求进行值拷贝,否则字符串不会生成新的副本来进行赋值操作。Swift 默认字符串拷贝的方式保证了在函数/方法中传递的是字符串的值。 很明显无论该值来自于哪里,都是您独自拥有的。 您可以放心您传递的字符串本身不会被更改。在实际编译时,Swift 编译器会优化字符串的使用,使实际的复制只发生在绝对必要的情况下,这意味着您将字符串作为值类型的同时可以获得极高的性能。使用字符(Working with Characters)

12、Swift 的 String 类型表示特定序列的 Character(字符) 类型值的集合。 每一个字符值代表一个 Unicode 字符。 您可利用 for-in 循环来遍历字符串中的每一个字符:for character in Dog! println(character)/ D/ o/ g/ !/ for-in 循环在 For Loops 中进行了详细描述。另外,通过标明一个 Character 类型注解并通过字符字面量进行赋值,可以建立一个独立的字符常量或变量:let yenSign: Character = 计算字符数量 (Counting Characters)通过调用全局 coun

13、tElements 函数,并将字符串作为参数进行传递,可以获取该字符串的字符数量。let unusualMenagerie = Koala , Snail , Penguin , Dromedary println(unusualMenagerie has (countElements(unusualMenagerie) characters)/ 打印输出:unusualMenagerie has 40 characters注意:不同的 Unicode 字符以及相同 Unicode 字符的不同表示方式可能需要不同数量的内存空间来存储。所以 Swift 中的字符在一个字符串中并不一定占用相同的内

14、存空间。因此字符串的长度不得不通过迭代字符串中每一个字符的长度来进行计算。如果您正在处理一个长字符串,需要注意 countElements 函数必须遍历字符串中的字符以精准计算字符串的长度。 另外需要注意的是通过countElements 返回的字符数量并不总是与包含相同字符的 NSString 的 length属性相同。 NSString 的 length 属性是基于利用 UTF-16 表示的十六位代码单元数字,而不是基于 Unicode 字符。为了解决这个问题, NSString 的 length属性在被 Swift 的 String 访问时会成为 utf16count。连接字符串和字符

15、(Concatenating Strings and Characters)字符串和字符的值可以通过加法运算符( +)相加在一起并创建一个新的字符串值:let string1 = hellolet string2 = therelet character1: Character = !let character2: Character = ?let stringPlusCharacter = string1 + character1 / 等于 hello!let stringPlusString = string1 + string2 / 等于 hello therelet characterPlusString = character1 + string1 / 等于 !hellolet characterPlusCharacter = character1 + character2 / 等于 !?您也可以通过加法赋值运算符 (+=) 将一个字符串或者字符添加到一个已经存在字符串变量上:var instruction = look overinstruction += string2/ instruction 现在等于 look over therevar welcom

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号