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

标签 ios swift search match keyword

假设我正在解析文档并尝试通过获取一些关键字并将它们与上述字符串匹配来查找 Test©/Testing© Keyword Finder

如果我使用的文档中的每个文本 block 都是分开的并且定义明确,这样就不会对句子/标题中连接的单词产生任何混淆,Swift 中是否有一种方法可以比较这样的带有关键字的单词 block 以找到匹配项?

最佳答案

Levenshtein 距离,又名编辑距离,是衡量两个字符串之间差异的指标。它的实现是here :

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

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

关于ios - 在 Swift 中将文本与关键字匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47669050/

相关文章:

ios - 更新等待开发者发布的应用程序

iOS 使用 CAEmitterLayer 创建落叶动画

xcode - 如何在 Swift 中设置 NSTableColumn 的宽度

php - 如何使用 jquery 或 javascript 为 ajax url 构造查询字符串?

ios - 如何编译具有第 3 方依赖项而不包含依赖项的静态库?

ios - iOS/Objective-C 的 switch 语句中的 Fallthrough

java - 如何查找句子中二元语法的索引

java - 在Java中实现BFS以找到从数字X到数字Z的最快方法

ios - 如何为经典的 Post 和 Comment 模型构建 Parse 数据模型? (使用 iOS、Swift、Parse)

swift - UIScrollView 不缩放 : What am I missing?