Swift 的字符串类型(String)功能强大,提供了丰富的方法来操作和处理文本。以下是一些常用的字符串方法和属性,根据用途分类总结如下:
基本属性
1、count: 字符串的长度(字符数)。
let text = "Hello"
print(text.count) // 5
2、isEmpty: 检查字符串是否为空。
let text = ""
print(text.isEmpty) // true
字符串比较
1、==: 比较两个字符串是否相等。
let a = "Swift"
let b = "Swift"
print(a == b) // true
2、hasPrefix(_:): 检查字符串是否以指定前缀开头。
let text = "Hello, World!"
print(text.hasPrefix("Hello")) // true
3、hasSuffix(_:): 检查字符串是否以指定后缀结尾。
let text = "Hello, World!"
print(text.hasSuffix("!")) // true
字符串操作
1、lowercased() 和 uppercased(): 转换为小写或大写。
let text = "Swift"
print(text.lowercased()) // "swift"
print(text.uppercased()) // "SWIFT"
2、trimmingCharacters(in:): 去除字符串两端指定字符集的内容(如空格)。
let text = " Swift "
print(text.trimmingCharacters(in: .whitespaces)) // "Swift"
3、replacingOccurrences(of:with:): 替换字符串中的指定部分。
let text = "Hello, World!"
print(text.replacingOccurrences(of: "World", with: "Swift")) // "Hello, Swift!"
4、remove(at:):删除指定索引处的字符。
var str = "Hello, World!"
let index = str.index(str.startIndex, offsetBy: 5)
str.remove(at: index) // "Hello World!"
5、removeSubrange(_:):删除指定范围的字符。
var str = "Hello, World!"
let range = str.index(str.startIndex, offsetBy: 7)..<str.endIndex
str.removeSubrange(range) // "Hello,"
6、insert(_:at:):在指定位置插入字符。
var str = "Hello, World!"
let index = str.index(str.startIndex, offsetBy: 5)
str.insert("X", at: index) // "HelloX, World!"
7、capitalized:将字符串中的每个单词的首字母大写。
let str = "hello, world"
let result = str.capitalized // "Hello, World"
子字符串
1、contains(_:): 检查字符串是否包含某个子字符串。
let text = "Hello, World!"
print(text.contains("World")) // true
2、prefix(_:) 和 suffix(_:): 提取前缀或后缀部分。
let text = "Swift Programming"
print(text.prefix(5)) // "Swift"
print(text.suffix(11)) // "Programming"
3、prefix (while:):获取字符串从开始位置起,直到遇到指定条件不再满足为止的部分。
let str = "123abc456"
let result = str.prefix(while: { $0.isNumber }) // "123"
4、suffix (while:):获取字符串从结尾起,直到遇到指定条件不再满足为止的部分。
let str = "123abc456"
let result = str.suffix(while: { $0.isNumber }) // "456"
5、prefix(upTo:):获取从开始到指定索引之前的部分。
let str = "Hello, World!"
let result = str.prefix(upTo: str.index(str.startIndex, offsetBy: 5)) // "Hello"
6、suffix(from:):获取从指定索引开始到字符串结尾的部分。
let str = "Hello, World!"
let result = str.suffix(from: str.index(str.startIndex, offsetBy: 7)) // "World!"
分割和拼接
1、components(separatedBy:): 按分隔符拆分字符串。
let text = "Swift,UI,Code"
print(text.components(separatedBy: ",")) // ["Swift", "UI", "Code"]
2、split(separator:): 按字符拆分字符串。
let text = "Swift UI Code"
print(text.split(separator: " ")) // ["Swift", "UI", "Code"]
3、joined(separator:): 将字符串数组拼接成单个字符串。
let array = ["Swift", "UI", "Code"]
print(array.joined(separator: " ")) // "Swift UI Code"
4、dropFirst(_:):去掉字符串的前面 n 个字符。
let formattedDecimal = String(format: "%.2f", 0.4567) // 结果是 "0.46"
let result = formattedDecimal.dropFirst(1) // 结果是 "46"
5、dropLast(_:):去掉字符串的最后 n 个字符。
let str = "Hello, World!"
let result = str.dropLast(1) // "Hello, World"
6、drop(while:):删除字符串的前部分字符,直到满足某个条件。
let str = "aaaHello, World!"
let result = str.drop(while: { $0 == "a" }) // "Hello, World!"
索引操作
1、startIndex 和 endIndex: 获取字符串的起始和结束索引。
let text = "Swift"
print(text[text.startIndex]) // "S"
print(text[text.index(before: text.endIndex)]) // "t"
2、index(_:offsetBy:): 根据偏移量获取索引。
let text = "Swift"
let index = text.index(text.startIndex, offsetBy: 2)
print(text[index]) // "i"
格式化
1、formatted(): 将数字等格式化为字符串(适用于Date、Number等)。
let number = 1234.56
print("\(number.formatted(.number.precision(.fractionLength(2))))") // "1,234.56"
正则匹配
1、range(of:options:): 查找字符串中的模式。
let text = "SwiftUI is awesome"
if let range = text.range(of: "SwiftUI") {
print(text[range]) // "SwiftUI"
}
2、字符串插值
使用 \() 在字符串中插入变量或表达式。
let name = "Swift"
let version = 5.9
print("Welcome to \(name) version \(version).") // "Welcome to Swift version 5.9."
3、localizedCaseInsensitiveContains:忽略大小写匹配
需要简单的本地化字符串匹配,但不涉及排序规则等复杂逻辑。
let text = "Hello, SwiftUI!"
let searchQuery = "swift"
let result = text.localizedCaseInsensitiveContains(searchQuery)
print(result) // true
4、localizedStandardContains:文本匹配
返回布尔值 true 或 false,表示目标字符串是否包含指定子字符串。
let text = "Hello, SwiftUI!"
let searchQuery = "swift"
let result = text.localizedStandardContains(searchQuery)
print(result) // true
对大小写不敏感(Hello, SwiftUI! 中的 Swift 与 swift 能匹配)。
能正确处理用户语言环境下的特定字符匹配,比localizedCaseInsensitiveContains高级。
