【问题标题】:Using string.find使用 string.find
【发布时间】:2015-02-12 22:46:19
【问题描述】:

我正在尝试编写一些代码来查看两个数据集并匹配它们(如果匹配),目前我正在使用 string.find 并且这有点工作但它非常严格。例如:它适用于 check1 但不适用于 check2/3,因为提要或其他单词中有空格。我喜欢在所有 3 个上返回一个匹配,但我该怎么做呢? (匹配超过 4 个字符,可能吗?)

check1 = 'jan'
check2 = 'janAnd'
check3 = 'jan kevin'

input = 'jan is friends with kevin'

if string.find(input.. "" , check1 )  then
print("match on jan")
end

if string.find( input.. "" , check2 )  then
print("match on jan and")
end

if string.find( input.. "" , check3 )  then
print("match on jan kevin")
end

PS:我尝试过 gfind、gmatch、match,但没有运气

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    find 只进行直接匹配,因此如果您正在搜索的字符串不是您正在搜索的子字符串(对字符集和特殊字符进行了一些模式处理),您将得不到匹配。

    如果您有兴趣匹配示例中列出的那些字符串,则需要查看模糊搜索。 This SO answerthis one 可能会有所帮助。我已经实现了第二个示例中列出的算法,但是在基于this algorithm 的二元组和三元组匹配中获得了更好的结果。

    【讨论】:

      【解决方案2】:

      Lua 的string.find 不仅适用于精确的字符串,也适用于模式。但是语法与您在“检查”中的语法有点不同。您希望 check2 为 "jan.+" 以匹配 "jan" 后跟一个或多个字符。您的第三张支票必须是jan.+kevin。这里的点代表任何字符,而后面的加号表示这可能是一个或多个字符的序列。 http://www.lua.org/pil/20.2.html 有更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-21
        • 2021-11-02
        • 2011-03-12
        • 2017-08-08
        • 2021-11-30
        • 2013-07-05
        相关资源
        最近更新 更多