字符串和字符
字符串通过String类型来表示,也可以表示为Character类型值的集合
字符串的值,取决于其被定义为常量还是变量
注意:Swift的String类型与Foundation NSString类进行了无缝桥接。如果利用Cocoa或Cocoa Touch中的Foundation框架进行工作,整个NSString API都可以调用创建的String类型的值,除了它的特性。也可以在任意要求传入NSString参数实例的API中使用String类型的值进行题huan
特殊字符:
转义字符:\0(空字符)、\\(反斜线)、\t(水平制表符)、\n(换行)、\r(回车)、
单字节Unicode标量:写成\xnn,其中nn为两位16进制数
双字节Unicode标量:写成\unnnn,其中n为四位16进制数
四字节Unicode标量:写成\Unnnnnnnn,其中n为八位16进制数
创建空字符串:
var emptyString = “”
var emptyString
= String()
//判断字符串是否为空
if emptyString .isEmpty{}
字符串是值类型
在进行常量或变量赋值操作或者在函数/方法中传值时,会进行值拷贝。在不同情况,都会对已有的字符串值创建新副本,并对该新副本进行传递或者赋值。而在OC中传递或者赋值的是同一个NSString的引用,除非程序员自己手动拷贝
Swift默认字符串拷贝,保证了传递的是字符串的值。原先的字符串不会改变。
Swift编译器会优化字符串的使用,实际的复制只发生在绝对必要的情况下。
字符(Characters)
String是字符的集合
for character in "Dog??"{}
let yenSign:Character = "$"
计算字符数量
countElements(str)
注意:
1、不同的Unicode字符以及相同的Unicode字符的不同表示方式,可能需要不同数量的内存空间来存储,所以Swift中的字符在一个字符串中表示并不一定占用相同的内存空间。因此,字符串的长度不得不通过迭代字符串中方每一个字符的长度来进行计算。如果你正在处理一个长字符串,需要注意countElements函数必须遍历字符串中的字符,以精准地计算长度
2、另外需要注意的是,通过countElements返回的字符数量并不总是与包含相同字符的NSString的length属性相同。NSString的length属性是基于利用UTF-16表示的code units数目,而不是基于Unicode字符。为了解决这个问题,NSString的length属性在被Swift的String值访问时会被成为utf16count
插值
\()
注意:插值字符中写在()中的表达式不能包含飞专题双引号和\并且不能包括回车和\n
判断两个字符串相等:
if str1 == str2
hasPrefix/hasSuffix检查字符串是否拥有特定的前缀和后缀
大写和小写字符串
uppercaseString和lowercaseString来访问一个字符串的大写和小写版