如何快速查找匹配的字符串?
2014-7-30 6:14:52
收藏:0
阅读:106
评论:2
我正在使用Lua - 只是一件FYI,因此在10 ^ 10位数字之后,比较变得无效。
我有一个包含50,000个名称的列表 - 这个列表甚至可能增加到数十万。我正在尝试显示部分名称的潜在匹配项列表,因此如果我输入“And”,这些可能会弹出:
"Andy" "Andrew" "安德烈" 等等,最多一次20个匹配项。
每个名称都是唯一的 - 没有完全相同的名称。名称可以包含字母,数字,空格和句点。当运行代码时,这些名称的表/数组没有按任何方式排序。在Lua中,如果可能的话,如何在用户在搜索栏中键入名称时实时显示潜在匹配项?
点赞
用户107090
下面的简单程序对我来说很有效。没有花哨的数据结构,只有简单的暴力搜索。用 / 开始新查询,用.结束程序。用 , 作为退格键。
/usr/share/dict/web2a 中单词列表共有 76205 个单词。也可以在 /usr/share/dict//words 中使用,其中有 235886 个单词。
local t={}
for w in io.lines"/usr/share/dict/web2a" do
t[w]=true
end
os.execute("stty cbreak </dev/tty >/dev/tty 2>&1")
local s=""
while true do
io.write("> ",s)
local c=io.read(1)
if c=="." then break end
if c=="/" then s="" elseif c=="," then s=s:sub(1,-2) else s=s..c end
local n=0
print()
for w in pairs(t) do
if w:sub(1,#s)==s then
n=n+1
print(n,w)
if n>=10 then break end
end
end
end
os.execute("stty -cbreak </dev/tty >/dev/tty 2>&1");
2014-07-30 12:42:51
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
由于每个名字都是唯一的,请创建一个数据库并将所有名称存储在索引列中,并在每个按键之后使用LIKE关键字运行查询。查询将运行得很快,因为LIKE是一个字符串函数,您的索引也是基于字符串的。根据您的技术堆栈,它可能看起来像这样:
Lua是基于ANSI-C的,由于ANSI-C不提供关键绑定能力,因此默认的Lua库也没有。但是,我相信现在可以使用Links-Lua库中的bind_key函数将Lua函数绑定到按键。