lua string.find无法匹配"/"
2016-10-19 21:53:48
收藏:0
阅读:126
评论:4
Lua string.find在反向查找时无法匹配"/",请查看以下代码:
c="~/abc.123" print(string.find(c,"/",-1,true))
这总是返回"nil"
点赞
用户2505965
string.find 不能用于字符串的向左搜索。init 参数只是设置从哪个位置开始向右搜索的位置:
第三个可选的数字参数
init指定了搜索开始的位置;其默认值是 1,并且可以是负数。
另外,在手册的早期注释中提到,负数索引是可以使用的,它们被用来反向索引字符串。因此,最后一个字符位于位置 -1,以此类推。
您需要编写自己的函数来从右侧开始搜索索引:
local function r_find (str, chr)
local bchar = chr:byte(1)
for i = #str, 1, -1 do
if str:byte(i) == bchar then
return i
end
end
end
print(r_find('~/.config/foo/bar', '/')) --> 14
或者考虑使用 string.match 来查找最后一节:
print(('~/.config/foo/bar'):match('/([^/]+)$')) --> 'bar'
另一个选择就是将字符串拆分为其各个部分,然后获取最后一个部分。
2016-10-19 22:55:03
用户107090
要查找最后一个 / 的位置,请使用 string.find(s,".*/")。第二个返回值是最后一个 / 的位置。
2016-10-20 00:32:30
用户3979429
Lua不能进行向左搜索,考虑先翻转字符串:
function Find_Leftwards(s,m,i)
local b,f = s:reverse():find(m, i)
return #s-f, #s-b
end
2016-10-20 02:50:24
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的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 代码?

请参考 Lua 参考手册。 https://www.lua.org/manual/5.3/
string.find(c,"/",-1,true)string.find函数的第三个参数确定搜索的起始位置。 由于输入了-1,您将从字符串的最后一个字符开始向前搜索。当然,您不会以这种方式发现任何内容。对于字符串,正索引从开头给出位置,负索引则从字符串结尾给出位置。
使用 1 从第一个字符开始搜索。然后,您会找到您的斜杠。或者,您可以使用任何小于等于 -8。
请注意,您还可以将
c:find("/",1,true)缩短为更短的版本。