【问题标题】:get filename back from textfile with lua使用lua从文本文件中获取文件名
【发布时间】:2021-10-13 11:25:26
【问题描述】:

我将文件名保存为 lua 中的文本文件,然后想在 texfile 中搜索文件名。我的问题是我只是得到了搜索到的字符串,而不是整个文件名。

这是我的代码:

local file,err = io.open("C:\\Users\\lamu7789\\Documents\\Lua_Plugins\\test_file_reader   \\channels.txt", 'w')
if file then 
  for dir in io.popen([[dir "C:\Users\lamu7789\Documents\Lua_Plugins\test_file_reader\textfiles" /b]]):lines() do 
    file:write(dir.."\n")
  end 
 file:close()
else 
 print("error: ", err)
end 

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

local file = io.open("C:\\Users\\lamu7789\\Documents\\Lua_Plugins\\test_file_reader\\channels.txt", "rb")
if not file then return nil end
local String = file:read "*a"
local name = String:match(channel)
print(name)
file:close()

对于这个例子,我得到“0x10”。 这就是路径的样子和“print(String)”打印出来的样子:

我想要返回的是这样的:“0x10_adress_second.txt”。 这里有什么问题? 感谢您的帮助。

【问题讨论】:

    标签: file lua


    【解决方案1】:

    你需要像这样匹配全名:

    channel = "0x10[_%w]+.txt"
    

    【讨论】:

      【解决方案2】:

      string.match 返回捕获。在你的情况下是"0x10"

      如果要捕获整行,则需要修改模式。

      local s = "0x7E_address_first.txt\n0x10_address_second.txt\n"
      print(s:match("0x7E[^\n]*"))
      print(s:match("0x10[^\n]*"))    
      

      这将捕获您的起始字符,后跟除换行符以外的任何字符。

      请参考https://www.lua.org/manual/5.4/manual.html#pdf-string.match

      【讨论】:

        猜你喜欢
        • 2013-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        • 2011-02-19
        相关资源
        最近更新 更多