Swift 4中的字符串是一个有序的字符集合,例如"Hello,World!"
。 它们由Swift 4数据类型String
表示,也是由字符类型值的集合来表示。
1. 创建字符串
可以使用字符串文字或创建String
类的实例来创建字符串,如下所示 -
// 使用String文字创建字符串
var stringA = "Hello, Swift 4!"
print( stringA )
// 使用String实例创建字符串
var stringB = String("Hello, Swift 4!")
print( stringB )
//多行字符串
let stringC = """
Hey this is a
example of multiple Line
string by Yiibai tutorials
"""
print(stringC)
编译并执行上述代码时,会产生以下结果 -
Hello, Swift 4!
Hello, Swift 4!
Hey this is a
example of multiple Line
string by Yiibai tutorials
2. 空字符串
可以通过使用空字符串文字或创建String
类的实例来创建空字符串,如下所示。还可以使用布尔属性isEmpty
检查字符串是否为空。参考以下示例代码 -
// 使用字符串文字创建空字符串
var stringA = ""
if stringA.isEmpty {
print( "stringA is empty" )
} else {
print( "stringA is not empty" )
}
// 使用String实例创建空字符串
let stringB = String()
if stringB.isEmpty {
print( "stringB is empty" )
} else {
print( "stringB is not empty" )
}
编译并执行上述代码时,会产生以下结果 -
stringA is empty
stringB is empty
3. 字符串常量
可以通过将String分配给变量来指定是否可以修改(或可变)字符串,或者通过使用let
关键字分配常量,如下所示 -
// stringA can be modified
var stringA = "Hello, Swift 4!"
stringA + = "--Readers--"
print( stringA )
// stringB can not be modified
let stringB = String("Hello, Swift 4!")
stringB + = "--Readers--"
print( stringB )
编译并执行上述代码时,会产生以下结果 -
Playground execution failed: error: <EXPR>:10:1: error: 'String' is not
convertible to '@lvalue UInt8'
stringB + = "--Readers--"
4. 字符串插值
字符串插值是一种通过在字符串文字中包含的值。从常量,变量,文字和表达式的混合构造新的字符串值的方法。
插入到字符串文字中的每个项目(变量或常量)都包含在一对括号中,前缀为反斜杠。 下面是一个简单的例子 -
var varA = 20
let constA = 100
var varC:Float = 20.0
var stringA = "\(varA) times \(constA) is equal to \(varC * 100)"
print( stringA )
编译并执行上述代码时,会产生以下结果 -
20 times 100 is equal to 2000.0
5.字符串连接
可以使用+
运算符来连接两个字符串或字符串和一个字符,或两个字符。 下面是一个简单的例子 -
let constA = "Yiibai,"
let constB = ".com!"
var stringA = constA + constB
print( stringA )
执行上面示例代码,得到以下结果:
Yiibai,.com!
6. 字符串长度
Swift 4字符串没有length
属性,但可以使用全局的count()
函数来计算字符串中的字符数。下面是一个简单的例子 -
var varA = "Hello, Swift 4!"
print( "\(varA), length is \((varA.count))" )
执行上面示例代码,得到以下结果:
Hello, Swift 4!, length is 15
7. 字符串比较
可以使用==
运算符来比较两个字符串变量或常量。 下面是一个简单的例子 -
var varA = "Hello, Swift 4!"
var varB = "Hello, World!"
if varA == varB {
print( "\(varA) and \(varB) are equal" )
} else {
print( "\(varA) and \(varB) are not equal" )
}
执行上面示例代码,得到以下结果:
Hello, Swift 4! and Hello, World! are not equal
8.字符串迭代
字符串又是swift 4中的值集合,因此我们可以使用循环遍历字符串。示例代码如下 -
for chars in "Yiibai.com" {
print(chars, terminator: " ")
}
执行上面示例代码,得到以下结果:
Y i i b a i . c o m
9.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) ")
}
编译并执行上述代码时,会产生以下结果 -
UTF-8 Codes:
68
111
103
63
63
63
UTF-16 Codes:
68
111
103
63
63
63
10.字符串函数和运算符
Swift 4支持与字符串相关的各种方法和运算符 -
编号 | 方法或操作符 | 描述 |
---|---|---|
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 |
逐个访问权限。即字符串的所有字符,一个接一个。 |
16 | insert("Value", at: position) |
在某个位置插入值。 |
17 | remove(at: position) ,removeSubrange(range) |
删除某个位置的值,或从字符串中删除一系列值。 |
18 | reversed() |
返回字符串的反转形式。 |