上一章Swift教程请查看:swift optional可选类型
在本教程中,你将了解字符和字符串在Swift中的用法,你还将了解可以对字符串和字符执行的不同操作。
什么是字符?
字符是单个符号(字母、数字等),swift中的字符为字符类型,声明如下:
let someCharacter:Character
如何在swift中声明和分配一个字符?
你可以使用双引号“”在与字符串相同的字符类型中赋值,但是在引号“”中应该只包含一个字符。
如果需要包含多个字符,则需要定义字符串而不是字符。
例1:声明和分配一个字符
let someCharacter:Character = “H”
let specialCharacter:Character = “@”
print(someCharacter)
print(specialCharacter)
例2:分配多个字符(错误)
但是如果你试图在字符中分配两个符号
/*
这将给出一个错误
将类型更改为String将可以修复它。
*/
let failableCharacter:Character = "H@"
print(failableCharacter)
当你尝试运行上述代码时,你将得到一个错误:
Cannot convert value of type String to Character.
使用unicode和转义序列创建字符
你还可以创建特殊类型的字符,例如表情符号,可以使用转义序列\u{n}创建unicode (unicode编码点,n是十六进制)。
示例3:创建unicode字符
let heartShape:Character = "\u{2665}"
print(heartShape)
在上面的例子中,从代码U+2665创建了一个心形字符。虽然双引号中包含了\u{2665},但是编译器并不把它当作字符串,因为我们使用了转义序列\u{n}。当包含在文本中时,转义序列不表示自身。
什么是字符串?
字符串就是字符的集合,Swift中的字符串为字符串类型,声明如下:
let someString:String
如何在Swift中声明和分配字符串?
可以使用字符串文字在字符串类型中赋值,字符串文字是用双引号“”包围的字符集合。
例4:声明和分配一个字符串
let someString:String = "Hello, world!"
let someMessage = "I love Swift."
print(someString)
print(someMessage)
字符串操作
有一些建在字符串处理函数和属性最常用操作,例如:加入字符串,将其更改为大写或利用它。让我们来了解一些常用的操作如下:
字符串比较
你可以检查两个字符串是否相等或不使用比较运算符(= =),操作符返回返回true,如果这两个字符串是相等的,否则返回false。
示例5:字符串比较
let someString = "Hello, world!"
let someMessage = "I love Swift."
let someAnotherMessage = "Hello, world!"
print(someString == someMessage)
print(someString == someAnotherMessage)
字符串连接
可以使用加法运算符(+)或复合赋值运算符(+=)将两个不同的字符串值相加。还可以使用append方法在字符串中追加字符/字符串。
例6:Swift中的字符串连接
let helloStr = "Hello, "
let worldStr = "World"
var result = helloStr + worldStr
print(result)
result.append("!")
print(result)
在上面的程序中,我们使用+运算符添加helloStr和worldStr来创建一个字符串结果。因此,print(result)输出Hello, World。
你还可以使用append方法附加任何字符或字符串,append(“!”)追加一个!字符串末尾的字符,那么,print(result)输出Hello, World!在屏幕上。
使用高级赋值运算符的字符串连接
我们还可以使用高级赋值运算符(+=)来追加字符串。
例7:使用+=操作符的字符串连接
var helloStr = "Hello, "
let worldStr = "World!"
helloStr += worldStr
print(helloStr)
注意这里使用的是var而不是let,如果你已经使用let定义了helloStr常量,那么你以后就不能使用+=操作符更改它并最终得到一个错误,你需要定义一个变量helloStr。
字符串插值
这是一个简单的计算字符串文字的过程,它由变量、常量等组成,假设你将玩家的名字和分数存储在两个常量中:
let playerName = "Van"
let playerScore = 99
现在你需要向玩家显示一条消息,这里,你需要一种方法来使用单个字符串中的常量值。
这可以实现使用字符串连接为:
let congratsMessage = "AA+ " + playerName + "!. 最高分 " + playerScore + "."
print(congratsMessage)
但是,你可以看到这很快就会变得混乱,你必须注意“AA+”后面的空格。另外,如果你必须使用两个以上的常量/变量,它将变得不可读。
有一种更简单的方法可以使用字符串插值来显示消息,插值是将变量或常量的值包含在字符串文字中的过程。
应该插入字符串文字的变量或常量被包装在一对圆括号()中,以反斜杠(\)作为前缀。
例8:Swift中的字符串插值
let playerName = "Van"
let playerScore = 99
let congratsMessage = "A+ \(playerName)!. 最高分 \(playerScore)."
print(congratsMessage)
一些有用的内置字符串函数和变量:
1. isEmpty
此函数确定字符串是否为空,如果字符串为空,则返回true,否则返回false。
例9:isEmpty
var emptyString = ""
print(emptyString.isEmpty)
2. capitalized
此属性用于将字符串中的每个单词首字母大写。
例10:capitalized
let someString = "hello, world!"
print(someString.capitalized)
3. 大写和小写uppercased和lowercased
大写函数将字符串转换为大写字母,小写函数将字符串转换为小写字母。
示例11:uppercased()和lowercased()
let someString = "Hello, World!"
print(someString.uppercased())
print(someString.lowercased())
4. 长度/count
此属性用于计算字符串中的字符总数。
例12:count
let someString = "Hello, World!"
print(someString.count)
5. hasPrefix
此函数确定字符串是否以某些字符开头并返回一个布尔值。如果字符串前缀与提供的值匹配,则返回true,否则返回false。
例13:hasPrefix
()
let someString = "Hello, World!"
print(someString.hasPrefix("Hell"))
print(someString.hasPrefix("hell"))
6. hasSuffix
此函数确定字符串是否以特定字符结束并返回一个布尔值。如果字符串后缀与提供的值匹配,则返回true,否则返回false。
例14:hasSuffix
()
print(someString.hasSuffix("rld!"))
print(someString.hasSuffix("Rld!"))