You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua中Python endswith()方法的等价实现及Python转Lua(nmap脚本)代码问题

Lua中实现Python的endswith()等价功能

嘿,刚好能帮你解决这个问题!Lua的标准字符串库并没有内置endswith()方法,但我们可以用两种简单的方式实现等价功能,完美适配你的nmap脚本需求。

方式一:针对单个后缀字符的极简写法

因为你只是判断字符串是否以单个字符'9'结尾,直接取最后一个字符比较是最直接高效的:

for var = 1000, 9999 do  -- 注意这里要把9000改成9999,和你的Python代码遍历范围一致哦
    local str = tostring(var)
    if string.sub(str, -1) == '9' then
        print(var)
    end
end

这里string.sub(str, -1)会取字符串str的最后一个字符,直接和'9'对比就完成了判断。

方式二:通用的endswith函数实现

如果以后需要判断更长的后缀(比如'99'、'xyz'),可以给Lua的string表扩展一个通用的endswith函数,用法和Python的完全一致:

-- 先定义通用的endswith函数
function string.endswith(str, suffix)
    -- 处理空后缀的情况(和Python行为一致,空字符串匹配任何字符串)
    return suffix == '' or string.sub(str, -#suffix) == suffix
end

-- 然后就可以像你最初写的那样调用了
for var = 1000, 9999 do
    if string.endswith(tostring(var), '9') then
        print(var)
    end
end

这个函数的原理是:用-#suffix获取后缀长度对应的倒数起始位置,截取字符串的最后#suffix个字符,再和目标后缀对比,完全还原Pythonendswith()的逻辑。

内容的提问来源于stack exchange,提问作者user19270126

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:47:39