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

Lua从存储文件名的文本文件中匹配获取完整文件名问题

问题原因

你调用string.match时传入的模式仅包含要匹配的前缀本身,Lua的字符串匹配函数只会返回与模式规则完全匹配的内容,因此只会返回你传入的0x10,不会自动抓取后续的完整文件名内容。

解决方法

方案1:修改匹配模式

将匹配规则调整为前缀+任意非换行字符的组合,即可抓取完整行的文件名:

-- 把原来的local name = String:match(channel)替换为下面的代码
local name = String:match(channel .. "[^\n]*")

其中[^\n]*代表匹配任意数量的非换行符,会把前缀之后直到行尾的所有文件名内容全部匹配返回。
如果需要避免前缀出现在文件名中间导致误匹配,可以再增加行首判断规则:

local name = String:match("%f[^\n]" .. channel .. "[^\n]*")

%f[^\n]是Lua的frontier模式,用来匹配行首的位置,保证前缀是出现在一行的开头,符合文件名存储的规则。

方案2:逐行遍历判断(更稳定)

直接逐行读取存储文件名的文本,匹配行前缀即可,逻辑更直观也不容易出现误匹配:

channel = "0x"..string.upper("10")

local file = io.open("C:\\Users\\lamu7789\\Documents\\Lua_Plugins\\test_file_reader\\channels.txt", "r")
if not file then return nil end
local target_name
for line in file:lines() do
    -- 判断当前行是否以指定前缀开头
    if line:sub(1, #channel) == channel then
        target_name = line
        break
    end
end
file:close()
print(target_name)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:09:02