📅  最后修改于: 2023-12-03 15:09:54.453000             🧑  作者: Mango
在 Swift 中,有许多方法可以比较两个字符串。本篇文章将介绍 Swift 中的几种字符串比较方法。
字符串相等比较是最基本且常用的字符串比较方法。在 Swift 中,使用 ==
运算符可以判断两个字符串是否相等。
let string1 = "Hello, world!"
let string2 = "Hello, world!"
if string1 == string2 {
print("两个字符串相等")
} else {
print("两个字符串不相等")
}
如果字符串相等,就会输出 两个字符串相等
,否则输出 两个字符串不相等
。
在 Swift 中,可以使用 hasPrefix()
和 hasSuffix()
方法来判断一个字符串是否有指定的前缀或后缀。
let string1 = "Hello, world!"
let string2 = "Hello"
if string1.hasPrefix(string2) {
print("\(string1) 有前缀 \(string2)")
} else {
print("\(string1) 没有前缀 \(string2)")
}
if string1.hasSuffix(string2) {
print("\(string1) 有后缀 \(string2)")
} else {
print("\(string1) 没有后缀 \(string2)")
}
这段代码会输出:
Hello, world! 有前缀 Hello
Hello, world! 没有后缀 Hello
Swift 中的字符串比较方法还包括大小写比较。可以使用 caseInsensitiveCompare()
和 localizedCaseInsensitiveCompare()
方法来比较字符串的大小写。
let string1 = "Hello, world!"
let string2 = "heLLo, wORld!"
if string1.caseInsensitiveCompare(string2) == .orderedSame {
print("\(string1) 和 \(string2) 相等")
} else {
print("\(string1) 和 \(string2) 不相等")
}
这段代码会输出:Hello, world! 和 heLLo, wORld! 相等
字符串距离指的是两个字符串的相似度,可以使用 levenshteinDistance()
方法来计算两个字符串之间的编辑距离。
extension String {
func levenshteinDistance(to string: String) -> Int {
var matrix = [[Int]]()
for i in 0...count {
matrix.append([Int]())
for j in 0...string.count {
matrix[i].append(0)
}
}
for i in 0...count {
matrix[i][0] = i
}
for j in 0...string.count {
matrix[0][j] = j
}
for i in 1...count {
for j in 1...string.count {
let cost = self[index(startIndex, offsetBy: i - 1)] == string[index(string.startIndex, offsetBy: j - 1)] ? 0 : 1
matrix[i][j] = Swift.min(Swift.min(matrix[i - 1][j] + 1, matrix[i][j - 1] + 1), matrix[i - 1][j - 1] + cost)
}
}
return matrix[count][string.count]
}
}
let string1 = "Hello, world!"
let string2 = "heLLo, wORld!"
let distance = string1.levenshteinDistance(to: string2)
print("\(string1) 和 \(string2) 的距离是 \(distance)")
这段代码会输出:Hello, world! 和 heLLo, wORld! 的距离是 4
以上就是 Swift 中几种常用的字符串比较方法。在实际开发中,根据具体需求选择合适的方法可以提高开发效率。