📜  快速比较字符串 - Swift (1)

📅  最后修改于: 2023-12-03 15:09:54.453000             🧑  作者: Mango

快速比较字符串 - Swift

在 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 中几种常用的字符串比较方法。在实际开发中,根据具体需求选择合适的方法可以提高开发效率。