【问题标题】:Compare string if there's at most one wrong character in Lua如果 Lua 中最多有一个错误字符,则比较字符串
【发布时间】:2014-01-31 06:44:57
【问题描述】:

我有一个词,我想检查它是否等于另一个词。如果是这样,那么一切都是正确的,但如果有一个(并且只有一个)错误的字符,它也可能是正确的。

local word = "table"
local word2 = "toble"
if word == word2 then
  print("Ok")
end

如何拆分word2

【问题讨论】:

  • 如果单词与基本单词的距离小于或等于一个字符,您希望您的条件通过吗?你听说过Levenshtein distance吗?这听起来像是您会感兴趣的事情。
  • 不,我没有,但看起来很有趣,谢谢 :)

标签: string lua split lua-patterns


【解决方案1】:

您可以先比较字符串的长度,如果相等则从第一个字符开始比较,如果有一个字符不同,则其余字符必须相同才能使您的条件为真:

function my_compare(w1, w2)
    if w1:len() ~= w2:len() then
        return false
    end
    for i = 1, w1:len() do
        if w1:sub(i, i) ~= w2:sub(i, i) then
            return w1:sub(i + 1) == w2:sub(i + 1)
        end
    end
    return true
end

【讨论】:

  • -1 作为string.sub 的第二个参数是多余的,因为如果省略,它们已经被假定为-1
  • @RyanStein 对,现已修复。
  • 谢谢,但我不明白我怎么知道是否只有一个错误的字符,因为如果只有一个错误的字符我可以接受比较,但如果有两个或更多的错误字符我不能
  • 这看起来不对,即使只有第一个字符是正确的,它也会返回 true。试试 print(my_compare('table','t02le'))
  • @JaneT 我把return true 行放错了地方,你是第一个发现它的人。现在应该可以正常工作了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-25
  • 1970-01-01
  • 1970-01-01
  • 2014-11-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多