如何在Lua中读取一行(仅一行)?

假设我有这个 .txt 文件:

this is line one
hello world
line three

在Lua中,我想创建一个只包含第二行内容的字符串,例如我想从此文件中获取特定的行并将其放入一个字符串中 io.open('file.txt', 'r') -- 仅读取第二行并将其放入字符串中,如下所示: local line2 = "hello world"

点赞
用户8621712
用户8621712

Lua文件有与io库相同的方法。这意味着文件具有各种选项的read()。例如:

local f = io.open("file.txt") -- 'r'是不必要的,因为它是一个默认值。
print(f:read()) -- '*l'是不必要的,因为它是一个默认值。
f:close()

如果你想要一些特定的行,你可以调用f:read()并什么也不做,直到你开始阅读所需的行。

但更妥善的解决方案是使用f:lines()迭代器:

function ReadLine(f, line)
    local i = 1 -- 行计数器
    for l in f:lines() do -- 行迭代器,“l”返回该行
        if i == line then return l end -- 我们找到了这一行,返回它
        i = i + 1 -- 计算行数
    end
    return "" -- 没有那一行
end
2020-11-11 19:25:45