上一章Swift教程请查看:swift循环语句和循环控制语句
本章我们详细介绍swift中的字符和字符串,及其相关的重要操作。
Swift中的字符
Swift中的字符是单个字符串字面量,由数据类型字符寻址,请看下面的例子,它使用两个字符常量:
let char1: Character = "A"
let char2: Character = "B"
print("Value: \(char1)")
print("Value: \(char2)")
如果你试图在一个字符类型变量或常量中存储多个字符,那么Swift将不允许这样做。尝试在Swift Playground中输入以下示例,你将得到一个错误,甚至在编译之前。
// 以下出错
let char: Character = "AB"
print("Value: \(char)")
空字符变量
无法创建将具有空值的空字符变量或常量,下面的语法是不可能的
// 以下出错
let char1: Character = ""
var char2: Character = ""
print("Value: \(char1)")
print("Value: \(char2)")
从字符串访问字符
正如在讨论Swift的字符串时所解释的那样,字符串表示指定顺序的字符值集合。因此,我们可以通过使用for-in循环遍历该字符串来访问给定字符串中的单个字符
for ch in "Hello" {
print(ch)
}
用字符连接字符串
下面的例子演示了如何将Swift的字符与Swift的字符串连接起来。
var varA:String = "Hello "
let varB:Character = "G"
varA.append( varB )
print("Value: = \(varA)")
Swift中的字符串
Swift中的字符串是字符的有序集合,例如“Hello, World!”,它们由Swift数据类型字符串表示,而后者又表示字符类型值的集合。
创建一个字符串
你可以通过使用字符串文字或创建一个字符串类的实例来创建一个字符串,如下所示:
// 使用字符串文字创建字符串
var stringA = "Hello, Swift!"
print( stringA )
// 使用字符串实例创建字符串
var stringB = String("Hello, Swift!")
print( stringB )
//多行字符串
let stringC = """
这是一个
多行示例
srcmini字符串
"""
print(stringC)
空字符串
你可以通过使用空字符串文字或创建String类的实例来创建空字符串,如下所示,还可以使用布尔属性isEmpty检查字符串是否为空。
// 使用字符串文字创建空字符串
var stringA = ""
if stringA.isEmpty {
print( "stringA为空" )
} else {
print( "stringA不为空" )
}
// 使用字符串实例创建空字符串
let stringB = String()
if stringB.isEmpty {
print( "stringB为空" )
} else {
print( "stringB不为空" )
}
字符串常量
你可以指定你的字符串是否可以通过将其赋值给一个变量来进行修改(或突变),或者通过使用如下所示的let关键字将其赋值给一个常量来将其指定为常量
// stringA可以修改
var stringA = "Hello, Swift!"
stringA + = "--Readers--"
print( stringA )
// 不能修改stringB
let stringB = String("Hello, Swift!")
stringB + = "--Readers--"
print( stringB )
字符串插值
字符串插值是一种通过将常量、变量、文本和表达式的值包含在字符串文本中来构造新字符串值的方法。
你插入到字符串文字中的每个项(变量或常量)都被包装在一对圆括号中,并以反斜杠作为前缀,举个简单的例子:
var varA = 20
let constA = 100
var varC:Float = 20.0
var stringA = "\(varA) x \(constA) == \(varC * 100)"
print( stringA )
字符串连接
可以使用+运算符连接两个字符串或一个字符串和一个字符,或两个字符,举个简单的例子:
let constA = "Hello,"
let constB = "World!"
var stringA = constA + constB
print( stringA )
字符串长度
Swift字符串没有长度属性,但是可以使用全局count()函数来计算字符串中的字符数。举个简单的例子:
var varA = "Hello, Swift!"
print( "\(varA), 长度为 \((varA.count))" )
字符串比较
你可以使用==操作符来比较两个字符串、变量或常量。举个简单的例子
var varA = "Hello, Swift!"
var varB = "Hello, World!"
if varA == varB {
print( "\(varA) 和 \(varB) 相同" )
} else {
print( "\(varA) 和 \(varB) 不相同" )
}
字符串迭代
字符串也是Swift中值的集合,所以我们可以使用循环遍历字符串。
for chars in "ThisString" {
print(chars, terminator: " ")
}
Unicode字符串
可以通过遍历字符串的utf8和utf16属性来访问字符串的UTF-8和UTF-16表示,如下例所示
var unicodeString = "Dog???"
print("UTF-8 Codes: ")
for code in unicodeString.utf8 {
print("\(code) ")
}
print("\n")
print("UTF-16 Codes: ")
for code in unicodeString.utf16 {
print("\(code) ")
}
字符串函数和运算符
Swift支持一系列与字符串相关的方法和操作符
编号 | 函数/运算符&目的 |
1 |
isEmpty 一个布尔值,决定了一个字符串是否为空。 |
2 |
hasPrefix(prefix: String) 函数的作用是:检查给定参数字符串是否作为字符串的前缀存在。 |
3 |
hasSuffix(suffix: String) 函数的作用是:检查给定参数字符串是否作为字符串的后缀存在。 |
4 |
toInt() 函数的作用是:将数值字符串值转换为整数。 |
5 |
count() 用于计算字符串中的字符数的全局函数。 |
6 |
utf8 属性返回字符串的UTF-8表示形式。 |
7 |
utf16 属性返回字符串的UTF-16表示形式。 |
8 |
unicodeScalars 属性以返回字符串的Unicode标量表示形式。 |
9 |
+ 操作符来连接两个字符串,或一个字符串和一个字符,或两个字符。 |
10 |
+= 将字符串或字符附加到现有字符串的操作符。 |
11 |
== 运算符来确定两个字符串的相等性。 |
12 |
< 运算符,以执行字典形式的比较,以确定一个字符串的计算结果是否小于另一个字符串。 |
13 |
startIndex 获取字符串的起始索引处的值。 |
14 |
endIndex 获取字符串结束索引处的值。 |
15 |
Indices 一个接一个地访问indeces,也就是将字符串中的所有字符一一对应。 |
16 |
insert(“Value”, at: position) 在一个位置插入一个值 |
17 |
remove(at: position) removeSubrange(range) 从一个位置删除一个值,或从字符串中删除一个值范围。 |
18 |
reversed() 返回字符串的逆序 |