我该如何在Lua中找到由关键字中的字母组成的单词?
2012-6-26 16:30:33
收藏:0
阅读:188
评论:3
例如,我有一个关键词"abandoned",我想从我存储的单词数组中找到包含此关键词字母的单词,如"done"、"abandon"、"band"等。我该如何搜索呢?
我尝试编写了以下代码,但并未正常工作。我编写了一个函数,该函数接受关键词和单词作为参数。然后我将关键词的每个字母放入keywordletters数组中,将单词的每个字母放入wordletters数组中。
然后我编写了一个循环来匹配字母。如果wordletters数组与keywordletters数组的字母匹配,则我将当前wordletters元素设置为nil,然后将keywordletters元素设置为nil。因为我们不能第二次使用它。
在所有循环之后,我检查了wordletters数组。如果有一个元素不为nil,则返回false。但是,它没有按照我想要的方式工作。你能帮帮我吗?
编辑:我解决了我的问题,并相应地编辑了代码。
以下是我的代码:
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
return true
end
点赞
用户936986
在数组上运行循环,并使用 string.find 对比这个长字符串。
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
2012-06-26 12:14:47
用户501459
例如,我有一个关键词“abandoned”,我想找到包含该关键词字母如“done”,“abandon”,“band”等单词,从我存储这些单词的数组中搜索它。我该如何搜索呢?
你可以将关键字简单地用作正则表达式(在Lua中称为“pattern”),将其字母作为集合,例如('^[%s]+$'):format('abandoned'):match('done')。
local words = {'done','abandon','band','bane','dane','danger','rand','bade','rand'}
local keyword = 'abandoned'
-- 将关键字转换为模式并将其与每个单词匹配
local pattern = string.format('^[%s]+$', keyword)
for i,word in ipairs(words) do
local matches = word:match(pattern)
print(word, matches and 'matches' or 'does not match')
end
输出:
done matches
abandon matches
band matches
bane matches
dane matches
danger does not match
rand does not match
bade matches
rand does not match
2012-06-26 18:52:03
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
尝试一下:
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