swift远征~字符串

swift中字符串就是字符的集合,字符串类型在swift下写做String, 字符类型写做Character,与OC中的NSString最大的不同在于,String的本质是一个结构体类型而并非类类型。

字符类型

在swift中字符与字符串的字面量都是用双引号包裹的,因此只有显示声明为Character的变量才被认为是字符类型。

let char : Character = "c"
let str3 = "c"

使用Unicode编码

swift中的字符与字符串都是由Unicode编码的,这意味着在swift中单个的字符无论是英文字母还是汉字还是Unicode表情都只占用一个字符长度,并且可以使用转义符号加Unicode编码直接为字符或字符串赋值。

let uc = "\u{1f60e}"      // uc:"😎"

扩展字形簇(extended grapheme cluster)

不仅是简单的使用Unicode编码,swift中的每一个字符准确的来说是一个扩展字形簇,它的意思是人类可识别的单个字符,比方说一个带有注音符的字符,在Unicode编码中实际上是两个字符,但在swift中被认为是一个字符。

let a = "\u{0061}\u{0301}"              // "á"
a.count                                 // 1

并且,在判断字符等价时,也是以扩展字形簇为基准来进行判断的

let b = "\u{00E1}"                      // "á"
a == b                                  // true

创建一个字符串

字面量方法

let str : String = "It's a string"

字符串判空

str.isEmpty

isEmpty是一个Bool类型的字符串属性

获取字符串长度

str.count

count是一个Int类型的字符串属性

字符串拼接

使用+运算符

var str1 = "1+1="
str1 += "2"

使用append函数

var str1 = "1+1="
str1.append("2")

结果与上等同,append函数可以传入Character和String类型。

字符串遍历

使用遍历集合的方式

for c in str {
    print(c)
}

此处c为Character类型。

索引字符串

由于扩展字形簇的特性,要索引swift中的字符串相较其他语言就要麻烦一些。

let start = str.startIndex                      //获取首字符索引
let end = str.index(start, offsetBy: 3)         //获取第四个字符的索引
let c4 = str[end]                               //"s"

截取字符串

同样的,截取字符串也稍显复杂

let subindex = str.index(str.startIndex, offsetBy: 5)        //获取第五个字符的索引
let c4 = str[subindex..<str.endIndex]                        //"a string"

本篇到此为止,希望这对你有帮助,如果有错误或是有需要补充的地方,望告知。


种一棵树最好的时间是在十年前,而后是现在。

Loading Disqus comments...
Table of Contents