2014-01-12 28 views
3

我有一個字,我想檢查它是否與另一個字相等。如果是這樣,那麼一切都是正確的,但如果只有一個(而且只有一個)錯誤的字符,它也可能是正確的。比較字符串,如果在Lua中至多有一個錯誤字符

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

如何拆分word2

+2

如果單詞少於或等於基本單詞的一個字符,您是否希望條件通過?你有沒有聽說過[Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance)?這聽起來像是你感興趣的東西。 –

+0

不,我沒有,但它似乎真的很有趣,謝謝:) – Nick21

+0

另請參閱http://en.wikipedia.org/wiki/Edit_distance。 – lhf

回答

4

您可以先比較字符串的長度,如果他們是平等的,然後從第一個字符比較,如果有一個字符是不同的,那麼剩下的必須是同你的病情是真實的:

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'是多餘的,因爲如果省略,它們已被假定爲'-1'。 –

+0

@RyanStein對,現在​​修復。 –

+0

謝謝,但我不明白我是如何知道是否只有一個錯誤的字符,因爲如果只有一個錯誤的字符我可以接受比較,但如果有兩個或更多的錯誤字符我不能 – Nick21