Ios 在Swift中将文本与关键字匹配

Ios 在Swift中将文本与关键字匹配,ios,swift,search,match,keyword,Ios,Swift,Search,Match,Keyword,假设我正在解析一个文档,并试图通过获取一些关键字并将它们与前面提到的字符串匹配来查找Test©关键字查找器 如果我使用的是一个文档,其中每个文本块都是独立的,并且定义清晰,这样就不会对句子/标题中连接的单词产生任何混淆,那么Swift中是否有方法将这些单词块与关键字进行比较以找到匹配项?Levenshtein距离,即编辑距离,是测量两个字符串之间差异的度量单位。它的实施是: 如您所见,levensthlindest(test:key,key:key)输出0,因为字符串是相同的。此外,最小输出为1

假设我正在解析一个文档,并试图通过获取一些关键字并将它们与前面提到的字符串匹配来查找
Test©关键字查找器


如果我使用的是一个文档,其中每个文本块都是独立的,并且定义清晰,这样就不会对句子/标题中连接的单词产生任何混淆,那么Swift中是否有方法将这些单词块与关键字进行比较以找到匹配项?

Levenshtein距离,即编辑距离,是测量两个字符串之间差异的度量单位。它的实施是:


如您所见,
levensthlindest(test:key,key:key)
输出
0
,因为字符串是相同的。此外,最小输出为
10
,它对应于预期的测试字符串。

Levenshtein距离,即编辑距离,是测量两个字符串之间差异的度量。它的实施是:


如您所见,
levensthlindest(test:key,key:key)
输出
0
,因为字符串是相同的。另外,最小输出是
10
,它对应于预期的测试字符串。

非常感谢!非常感谢你!
func levenshteinDist(test: String, key: String) -> Int {
    let empty = Array<Int>(repeating:0, count: key.count)
    var last = [Int](0...key.count)

    for (i, testLetter) in test.enumerated() {
        var cur = [i + 1] + empty
        for (j, keyLetter) in key.enumerated() {
            cur[j + 1] = testLetter == keyLetter ? last[j] : min(last[j], last[j + 1], cur[j]) + 1
        }
        last = cur
    }
    return last.last!
}
let test1 = "Test©/Testing© Keyword Finder"
let test2 = "Test© Word Finder"
let test3 = "Number Categorizer"
let test4 = "Alphabet in Order"

let key = "Test Testing Keyword"

print(levenshteinDist(test: test1, key: key)) // 10
print(levenshteinDist(test: test2, key: key)) // 14
print(levenshteinDist(test: test3, key: key)) // 18
print(levenshteinDist(test: test4, key: key)) // 15
print(levenshteinDist(test: key, key: key)) // 0