天天看点

Swift实用小册03:字符串的使用

在本章中,你将学会字符串的一些常用使用方法。

前言

和​

​Apple​

​​官网或者网上分享的教程类文章不同,我将以实际开发角度讲述​

​Swift​

​​语言的一些概念和用法,方便大家更好地学习和掌握​

​Swift​

​语言。

这同时也是对自己学习​

​Swift​

​语言过程的知识整理。

如有错误,以你为准。

我们新建一个​

​PlayGround​

​​文件,命名为​

​SwiftString​

​。

Swift实用小册03:字符串的使用

字符串字面量

刚看是看到“​

​字面量​

​”这个概念的时候,着实被这个全新的文字组合吓到。

字符串字面量是指使用双引号​

​“”​

​括起来的的字符序列,例如:

//字符串字面量

let userName = "文如秋雨"      

上述代码中,​

​"文如秋雨"​

​​这部分就是字符串的​

​字面量​

​​,在​

​Swift​

​​中,字符串的字面量常常用于给常量或者变量​

​赋值​

​。

我们的字面量​

​"文如秋雨”​

​​,通过赋值运算符​

​“=”​

​​,给​

​let​

​​声明的常量​

​userName​

​赋予了初始值。

除了双引号​

​“”​

​​,我们还有用三引号​

​"""​

​​括起来的​

​多行字符字面量​

​,示例:

//多行字符字面量

let oneSentence = """
    遇到困难时,我们要迎难而上,而不是畏畏缩缩。
    找到一个明确的目标,不在乎别人的眼光,努力去做就好了。
"""      

上述代码中,多行字符字面量用三引号包裹,​

​开头​

​​一个三引号,​

​结尾​

​一个三引号。

我们可以注意到一个细节,多行字符字面量和标准的字符字面量不同点:

只要在开始三引号和结束三引号内,字面量可以随意换行。

多行字符字面量的好处是,当我们的字面量特别多的时候,可以有效提高代码可读性,​

​优雅​

​​,​

​优雅​

​。

字符串初始化

我们可以直接使用赋值运算符给字符串初始化,初始化空的字符除了内容为空外,还可以使用构造的方法创建实例,示例:

//空字符串初始化

var string = ""    //空字符串
var emptyString = String()    //空字符串      

上述代码中,都是定义空字符串的方法,最终的效果是一样的,看个人使用习惯。

字符串可变性

字符串可变性主要取决于声明方式。

​let​

​​常量声明方式只能定义标准字符串,而且是不可变的。​

​var​

​变量声明方式定义的字符串,在后续的代码编写中是可以变化更新,示例:

//字符串可变性

//1、声明URL常量
let userUrl = "https://j.cn/user/"

//2、声明空字符串ID
var indexURL = "3897092103223517"

//3、字符串变化      

上述代码中,​

​indexURL​

​​最终输出的结果为。

在这里我们还使用到了字符串的连接方式,通过加号运算符,将两个字符组合成一个新的字符串。

但如果是多行字符的情况又会有点不同,多行字符是对应顺序进行连接,示例:

//多行字符连接

//第三行是空的
let oneSentence2 = """
    遇到困难时,我们要迎难而上,而不是畏畏缩缩。
    找到一个明确的目标,不在乎别人的眼光,努力去做就好了。

"""

//一行数据
let twoSentence2 = """
    心存感恩,善缘不断。
"""      

上述代码中,我们可以看到多行字符连接后,​

​twoSentence2​

​​的字面量是连接到​

​oneSentence2​

​后面空的那行的。

字符串字符数量

在​

​Swift​

​​中,我们使用​

​.count​

​计算字符的数量,示例:

//字符数量计算

let userName = "文如秋雨"
print("\(userName.count)")      

上述代码中,字符数量的结果为​

​4​

​。

字符串索引

索引的概念是定位到具体的位置,我们可以通过字符串关联的索引类型,定位到里面每个字符的位置。示例:

//字符串索引

let userName = "文如秋雨”

//第一个字符
userName[userName.startIndex]    //输出“文”

//第二个字符
userName[userName.index(after: userName.startIndex)]    //输出“如”

//指定输出第3个字符,索引是0,1,2开始算
let index = userName.index(userName.startIndex, offsetBy: 2)
userName[index]    //输出“秋”

//索引最后一个字符
userName[userName.index(before: userName.endIndex)]    //输出“雨”      

在上述代码中,我们使用​

​startInde​

​获得开始位置的索引,获得了第一个字符。

然后,通过​

​index(after:) ​

​的方法,获得了后一个字符的索引,获得了第二个字符。

然后,通过​

​index(_:offsetBy:) ​

​方法来获取对应偏移量的索引,获得了第三个字符。

最后,我们使用​

​endIndex​

​获得结束位置的索引,获得了第四个字符。

字符串插入和删除

在​

​Swift​

​​中,我们可以使用​

​insert(_:at:)​

​​方法在字符串中插入字符,然后使用​

​remove(at:) ​

​方法在字符串中删除字符。示例:

//字符串插入和删除

var userName2 = "文如秋雨"
userName2.insert("!", at: userName2.endIndex)    //输出“文如秋雨!”
userName2.remove(at: userName2.index(before: userName2.endIndex))    //输出“!”      

在上述代码中,我们使用​

​insert​

​​插入的方法在​

​userName2​

​​索引的最后插入一个字符,插入的字符​

​作为​

​最后一个索引的位置。

而​

​remove​

​​删除的方法,则​

​定位​

​​到最后一个字符的位置,删除掉​

​前面​

​​所有字符,就留下了​

​“!”​

​字符。

字符串比较

和上一章使用比较运算符比较数值一样,字符串也可以直接用来比较是否相同和不同。示例:

//字符串比较

let question1 = "你喜欢我吗?"
let question2 = "我喜欢你吗?"

if question1 != question2 {
    print("两个不一样的问题")
}      

在上述代码中,我们使用​

​“!=”​

​​不等于操作符作为判断,如果两个字符串的内容不相同,则输出结果。同理,我们也可以使用​

​“==”​

​等于运算符作为判断。

Swift实用小册03:字符串的使用