在本章中,你将学会字符串的一些常用使用方法。
前言
和Apple
官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift
语言的一些概念和用法,方便大家更好地学习和掌握Swift
语言。
这同时也是对自己学习Swift
语言过程的知识整理。
如有错误,以你为准。
我们新建一个PlayGround
文件,命名为SwiftString
。
字符串字面量
1
刚看是看到“字面量
”这个概念的时候,着实被这个全新的文字组合吓到。
字符串字面量是指使用双引号“”
括起来的的字符序列,例如:
//字符串字面量 let userName = "文如秋雨"
上述代码中,"文如秋雨"
这部分就是字符串的字面量
,在Swift
中,字符串的字面量常常用于给常量或者变量赋值
。
我们的字面量"文如秋雨”
,通过赋值运算符“=”
,给let
声明的常量userName
赋予了初始值。
除了双引号“”
,我们还有用三引号"""
括起来的多行字符字面量
,示例:
//多行字符字面量 let oneSentence = """ 遇到困难时,我们要迎难而上,而不是畏畏缩缩。 找到一个明确的目标,不在乎别人的眼光,努力去做就好了。 """
上述代码中,多行字符字面量用三引号包裹,开头
一个三引号,结尾
一个三引号。
我们可以注意到一个细节,多行字符字面量和标准的字符字面量不同点:
只要在开始三引号和结束三引号内,字面量可以随意换行。
多行字符字面量的好处是,当我们的字面量特别多的时候,可以有效提高代码可读性,优雅
,优雅
。
字符串初始化
我们可以直接使用赋值运算符给字符串初始化,初始化空的字符除了内容为空外,还可以使用构造的方法创建实例,示例:
//空字符串初始化 var string = "" //空字符串 var emptyString = String() //空字符串
上述代码中,都是定义空字符串的方法,最终的效果是一样的,看个人使用习惯。
字符串可变性
字符串可变性主要取决于声明方式。
let
常量声明方式只能定义标准字符串,而且是不可变的。var
变量声明方式定义的字符串,在后续的代码编写中是可以变化更新,示例:
//字符串可变性 //1、声明URL常量 let userUrl = "https://juejin.cn/user/" //2、声明空字符串ID var indexURL = "3897092103223517" //3、字符串变化 indexURL += userUrl
上述代码中,indexURL
最终输出的结果为juejin.cn/user/389709…。
在这里我们还使用到了字符串的连接方式,通过加号运算符,将两个字符组合成一个新的字符串。
但如果是多行字符的情况又会有点不同,多行字符是对应顺序进行连接,示例:
//多行字符连接 //第三行是空的 let oneSentence2 = """ 遇到困难时,我们要迎难而上,而不是畏畏缩缩。 找到一个明确的目标,不在乎别人的眼光,努力去做就好了。 """ //一行数据 let twoSentence2 = """ 心存感恩,善缘不断。 """ //输出结果 print(oneSentence2 + 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("两个不一样的问题") }
在上述代码中,我们使用“!=”
不等于操作符作为判断,如果两个字符串的内容不相同,则输出结果。同理,我们也可以使用“==”
等于运算符作为判断。
以上就是本章的全部内容。
快来动手试试吧!