您的位置:首页 > 移动开发 > Swift

字符串和字符String and Characters

2015-08-21 16:33 190 查看
Swift的String和Character类型提供了一个快速的兼容Unicode的方式来处理代码中的文本信息

String类型与Foundation框架中的NSString类型进行了无缝桥接,所有的NSString API都可以为String类型服务

字符串字面量可以包含以下特殊字符:

1、转义字符 \0(空字符)、\(反斜杠)、\t(水平制表符)、\n(换行符)、\r(回车符)、\”(双引号)、\’(单引号)

2、Unicode标量 \u{n}:n为任意1-5位十六进制数

字符串可变性、连接字符串

let str = "aa" + "\u{1f436}”
str += “bb"


字符数量:count(str)

在Swift中我们是使用String还是NSString?

引用喵神的解释:

首先虽然 String 和 NSString 有着良好的互相转换的特性,但是现在 Cocoa 所有的 API 都接受和返回 String

类型。我们没有必要也不必给自己凭空添加麻烦去把框架中返回的字符串做一遍转换,既然 Cocoa 鼓励使用

String,并且为我们提供了足够的操作 String 的方法,那为什么不直接使用呢?

其次,因为在 Swift 中 String 是 struct,相比起 NSObject 的 NSString 类来说,更切合字符串的

“不变” 这一特性。通过配合常量赋值 (let)

,这种不变性在多线程编程时就非常重要了,它从原理上将程序员从内存访问和操作顺序的担忧中解放出来。另外,在不触及 NSString

特有操作和动态特性的时候,使用 String 的方法,在性能上也会有所提升。

最后,因为 String 实现了像 CollectionType 这样的接口,因此有些 Swift 的语法特性只有String 才能使用,而

NSString 是没有的。一个典型就是 for…in 的枚举,我们可以写



let levels = "ABCDE"
for i in levels {
print(i)
}


如果转换为NSString类型则会编译失败

自己解释:Swift的String类型是值类型,(结构体和枚举也是值类型,值类型的特点是当值类型被赋予给一个变量、常数或者传递给一个函数的时候,实际上操作的都是该值的拷贝)String是一个结构体类型,和Objective-C中的NSString不一样,所以当你声明一个String类型的值是,该值不是一个指针,在使用上更加安全

例外情况:

由于String和NSString采用编码方式不同,所以导致一些特殊的方法只能在NSString中使用(length,subStringWithRange())而没有Swift的版本

NSString采用UTF-16表示十六位代码单元数字,而不是基于Unicode字符

引用:《The Swift Programming Language》 ,王巍大神的《100个Swift必备tips》

如有问题欢迎指正,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息