String 如何在Lua中找到关键字中包含字母的单词?
例如,我有一个关键字“放弃”,我想从存储这些单词的数组中查找包含该关键字字母的单词,如“完成”、“放弃”、“带”。如何搜索 我试图写这段代码,但没有正常工作。我写了一个函数,它接受关键字和单词。然后我将关键字的字母放入关键字字母数组,并将单词的字母放入单词字母数组 然后我写了一个匹配字母的循环。如果wordletters数组与keywordletters数组中的字母匹配,那么我将当前wordletters元素赋值为nil,然后将keywordletters元素赋值为nil。因为我们不能再次使用它 在所有循环之后,我检查了wordletters数组。如果它有一个元素不是nil,那么我返回false。但是,它不能按我所希望的方式工作。你能帮助我吗 编辑:ı我解决了我的问题并相应地编辑了代码 这是我的密码:String 如何在Lua中找到关键字中包含字母的单词?,string,search,lua,String,Search,Lua,例如,我有一个关键字“放弃”,我想从存储这些单词的数组中查找包含该关键字字母的单词,如“完成”、“放弃”、“带”。如何搜索 我试图写这段代码,但没有正常工作。我写了一个函数,它接受关键字和单词。然后我将关键字的字母放入关键字字母数组,并将单词的字母放入单词字母数组 然后我写了一个匹配字母的循环。如果wordletters数组与keywordletters数组中的字母匹配,那么我将当前wordletters元素赋值为nil,然后将keywordletters元素赋值为nil。因为我们不能再次使用它
function consistLetters(keyword,word)
keywordletters={ }
wordletters= { }
local found=false
findLetters(keyword,keywordletters)
findLetters(word,wordletters)
for i=1, #wordletters,1 do
for j=1, #keywordletters,1 do
if(keywordletters[j]~="") then
if(wordletters[i]==keywordletters[j]) then
keywordletters[j]=""
found=true;
break
end
end
end
if found~=true then
return false
end
found=false;
end
end
试试这个:
W={"done", "abandon", "band"}
for k,w in pairs(W) do
W[w]=true
end
function findwords(s)
for i=1,#s do
for j=i+1,#s do
local w=s:sub(i,j)
if W[w] then print(w) end
end
end
end
findwords("abandoned")
如果没有单词数组,可以加载字典:
for w in io.lines("/usr/share/dict/words") do
W[w]=true
end
试试这个:
W={"done", "abandon", "band"}
for k,w in pairs(W) do
W[w]=true
end
function findwords(s)
for i=1,#s do
for j=i+1,#s do
local w=s:sub(i,j)
if W[w] then print(w) end
end
end
end
findwords("abandoned")
如果没有单词数组,可以加载字典:
for w in io.lines("/usr/share/dict/words") do
W[w]=true
end
在数组上运行循环并使用
字符串。查找以检查此长单词
for idx = 1, #stored_words do
local word = stored_words[idx]
if string.find(long_word, word, 1, true) then
print(word .. " matches part of " .. long_word)
end
end
在数组上运行循环并使用字符串。查找以检查此长单词
for idx = 1, #stored_words do
local word = stored_words[idx]
if string.find(long_word, word, 1, true) then
print(word .. " matches part of " .. long_word)
end
end
例如,我有一个关键字“弃置”,我想从存储这些单词的数组中查找包含该关键字字母的单词,如“done”、“弃置”、“band”。我如何搜索它
您可以简单地将关键字用作正则表达式(在Lua中称为“pattern”),将其字母作为一个集合使用,例如('^[%s]+$):format('弃置'):match('done')
输出:
done matches
abandon matches
band matches
bane matches
dane matches
danger does not match
rand does not match
bade matches
rand does not match
例如,我有一个关键字“放弃”,我想从存储这些单词的数组中查找包含该关键字字母的单词,如“完成”、“放弃”、“带”。如何搜索
您可以简单地将关键字用作正则表达式(在Lua中称为“pattern”),将其字母作为一个集合使用,例如('^[%s]+$):format('弃置'):match('done')
输出:
done matches
abandon matches
band matches
bane matches
dane matches
danger does not match
rand does not match
bade matches
rand does not match
类似于如果存储的单词数量很大,这将是缓慢的。如果存储的单词数量很大,这将是缓慢的。谢谢你,但我也想找到单词中的字母组成的关键字不一定应该是子字符串。很抱歉,没有给出适当的示例,我给出的所有示例都是子字符串。但是,它应该是还可以找到“dan,爸爸,nad,ded”“如果它们在字典中,并且由关键字的字母组成。@user1463542,哦,这是一个非常不同的问题。我建议你问一个单独的问题。谢谢你,但我还想找到由关键字中的字母组成的单词不一定应该是子字符串。很抱歉没有给出适当的示例,我给出的所有示例都是子字符串。但是,如果“dan,dad,nad,ded”在字典中,并且由关键字的字母组成,它也应该找到它们。@user1463542,哦,这是一个非常不同的问题。我建议你单独问一个问题。