我有一個字,我想檢查它是否與另一個字相等。如果是這樣,那麼一切都是正確的,但如果只有一個(而且只有一個)錯誤的字符,它也可能是正確的。比較字符串,如果在Lua中至多有一個錯誤字符
local word = "table"
local word2 = "toble"
if word == word2 then
print("Ok")
end
如何拆分word2
?
我有一個字,我想檢查它是否與另一個字相等。如果是這樣,那麼一切都是正確的,但如果只有一個(而且只有一個)錯誤的字符,它也可能是正確的。比較字符串,如果在Lua中至多有一個錯誤字符
local word = "table"
local word2 = "toble"
if word == word2 then
print("Ok")
end
如何拆分word2
?
您可以先比較字符串的長度,如果他們是平等的,然後從第一個字符比較,如果有一個字符是不同的,那麼剩下的必須是同你的病情是真實的:
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
作爲「string.sub」的第二個參數的'-1'是多餘的,因爲如果省略,它們已被假定爲'-1'。 –
@RyanStein對,現在修復。 –
謝謝,但我不明白我是如何知道是否只有一個錯誤的字符,因爲如果只有一個錯誤的字符我可以接受比較,但如果有兩個或更多的錯誤字符我不能 – Nick21
如果單詞少於或等於基本單詞的一個字符,您是否希望條件通過?你有沒有聽說過[Levenshtein distance](https://en.wikipedia.org/wiki/Levenshtein_distance)?這聽起來像是你感興趣的東西。 –
不,我沒有,但它似乎真的很有趣,謝謝:) – Nick21
另請參閱http://en.wikipedia.org/wiki/Edit_distance。 – lhf