为啥String和Character要单独拿出来讲呢?因为和C区别蛮大的,而且经常用到。感觉Swift的String还是没有Java的String好用。比如截串就是个麻烦的事情。以后String可能还会更新,让String变得更加好用。
需要注意的是,Swift中的String是值传递。附上String 的定义就明白了。
开始就是创建字符串,最简单的方法如下
//创建空串的两种方法,二者是一样的
使用三个引号来创建一段话的string
开始的三个引号的第一行后面的空格都会忽略,但是第二行的空格不会。
Character相比于C和java来讲有区别,如果要创建一个Character,必须显式声明类型
改变String,这个语法和java一样的,不过内存管理层面已经是不同的对象了。
遍历String字符的两种方法
获取String长度的办法
但是要注意,swift里面有extended grapheme clusters(An extended grapheme cluster is a sequence of one or more Unicode scalars that (when combined) produce a single human-readable character.) 也就是几个Unicode字符组合成一个人类可以识别的字符。
所以,当string里面添加了characters后,count不一定会增加。
string的count不一定和NSString的length一致。
(The length of an NSString is based on the number of 16-bit code units within the string’s UTF-16 representation and not the number of Unicode extended grapheme clusters within the string.)
String的Index,这个蛋疼啊!不像java里面的Index直接就是一个数字。String的Index是在不同的extension中定义的。
先来看获得String里面的某个字符的过程,蛋疼。直接上官方文档
插入和移除字符
Swift引入了一个SubString类,用来截串。终于不用Swift2恶心的那套了。直接上官方代码
另外一种方法就是将String转换为NSString,然后调用NSString的截串方法
这些都是麻烦的方法,最好就是写一个extension来扩展String,先附上代码