- 关于 Swift
- Swift 概览
- 方法
- 基础内容
- 基本运算符
- 字符串和字符
- 集合类型
- 控制流
- 函数
- 闭包
- 枚举
- 类和结构体
- 属性
- 下标
- 继承
- 初始化
- 反初始化
- 自动引用计数
- 可选链
- 错误处理
- 类型转换
- 内嵌类型
- 扩展
- 协议
- 泛型
- 访问控制
- 高级运算符
- 关于语言参考
- 词汇结构
- 类型
- 表达式
- 特性
- Swift 2 中的 String 字符串
- Swift 开发者的 SDK
- App Store 里的 Swift 2 App
- Playground 里的字面量
- Swift 是开源的
- 可交互的 Playground
- Swift 3 和 Xcode 8
- 在 Swift 中使用 JSON
- 在 iPad 上用 Swift Playgrounds 给机器人编程
- Objective-C id 作为 Swift Any
- 版本兼容性
- 内存安全性
- 不透明类型
字符串和字符
Swift 的 String 和 Character 类型提供了一种快速的符合 Unicode 的方式操作你的代码。字符串的创建和修改语法非常轻量易读,使用与 C 类似的字符串字面量语法。字符串串联只需要使用
+运算符即可,字符串的可修改能力通过选择常量和变量来进行管理,就如同 Swift 语言中的其他值。你同样可以使用字符串来插入常量、变量、字面量以及表达式到更长的字符串当中,这就是所谓的字符串插值。这样让创建自定义字符串值来显示、储存和打印值变得更加简单。
别看语法简单,Swift 的 String类型仍旧是快速和现代的字符串实现。每一个字符串都是由 Unicode 字符的独立编码组成,并且提供了多种 Unicode 表示下访问这些字符的支持。
注意
Swift 的 String类型桥接到了基础库中的 NSString类。Foundation 同时也扩展了所有 NSString 定义的方法给 String 。也就是说,如果你导入 Foundation ,就可以在 String 中访问所有的NSString 方法,无需转换格式。
更多在 Foundation 和 Cocoa 框架中使用 String的内容,参见 与 Cocoa 和 Objective-C 一起使用 Swift (Swift 4)(官网链接)。
字符串字面量
你可以在你的代码中插入预先写好的 String值作为字符串字面量。字符串字面量是被双引号(")包裹的固定顺序文本字符。
使用字符串字面量作为常量或者变量的初始值:
如果你需要很多行的字符串,使用多行字符串字面量。多行字符串字面量是用三个双引号引起来的一系列字符:
let quotation = """ The White Rabbit put on his spectacles. "Where shall I begin, please your Majesty?" he asked. "Begin at the beginning," the King said gravely, "and go on till you come to the end; then stop." """
多行字符串字面量把所有行包括在引号内。字符串包含第一行开始于引号标记(""" )并结束于末尾引号标记之前,也就是说下面的字符串的开始或者结束都不会有换行符:
let singleLineString = "These are the same." let multilineString = """ These are the same. """
当你的代码中在多行字符串字面量里包含了换行,那个换行符同样会成为字符串里的值。如果你想要使用换行符来让你的代码易读,却不想让换行符成为字符串的值,那就在那些行的末尾使用反斜杠(\ ):
let softWrappedQuotation = """ The White Rabbit put on his spectacles. "Where shall I begin, \ please your Majesty?" he asked. "Begin at the beginning," the King said gravely, "and go on \ till you come to the end; then stop." """
要让多行字符串字面量起始或结束于换行,就在第一或最后一行写一个空行。比如说:
let lineBreaks = """ This string starts with a line break. It also ends with a line break. """
多行字符串可以缩进以匹配周围的代码。双引号(""" )前的空格会告诉 Swift 其他行前应该有多少空白是需要忽略的。比如说,尽管下面函数中多行字符串字面量缩进了,但实际上字符串不会以任何空白开头。
func generateQuotation() -> String { let quotation = """ The White Rabbit put on his spectacles. "Where shall I begin, please your Majesty?" he asked. "Begin at the beginning," the King said gravely, "and go on till you come to the end; then stop." """ return quotation } print(quotation == generateQuotation()) // Prints "true"
总而言之,如果你在某行的空格超过了结束的双引号(""" ),那么这些空格会被包含。
字符串字面量里的特殊字符
字符串字面量能包含以下特殊字符:
- 转义特殊字符 \0 (空字符),\\ (反斜杠),\t (水平制表符),\n (换行符),\r(回车符),\" (双引号) 以及\' (单引号);
- 任意的 Unicode 标量,写作 \u{n},里边的n是一个 1-8 个与合法 Unicode 码位相等的16进制数字。
下边的代码展示了这些特殊字符的四个栗子。
wiseWords 常量包含了两个转义双引号字符,dollarSign,blackHeart 和 sparklingHeart 常量展示了 Unicode 标量格式:
let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"<br /> // "Imagination is more important than knowledge" - Einstein<br /> let dollarSign = "\u{24}" // $, Unicode scalar U+0024<br /> let blackHeart = "\u{2665}" // ♥, Unicode scalar U+2665<br /> let sparklingHeart = "\u{1F496}" // </p>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论