Lua中的文件问题

时间:2015-10-22 22:05:07

标签: string file lua

我想知道如何删除特定的文件行?

示例:file.txt

  1. 微博
  2. 的Orkut
  3. MSN
  4. 假设我要删除第3行,那么文件将是:

    1. 微博
    2. MSN
    3. 我不想删除这些行,需要整理并避免在文件中出现空行!

2 个答案:

答案 0 :(得分:1)

加载文件内容,在内存中操作它们,然后将新内容写回文件。

在这种情况下,您可以使用files.lines逐行加载文件内容,将您想要的文件内容存储在一个数组中并省略您不想要的文件内容,然后将数组转换回字符串与table.concat

答案 1 :(得分:0)

您可以通过匹配字符串来查找特定项目:

function func(file, toDelete)
    local t = {}
    local tt = {}
    for line in io.lines(file) do
            table.insert(t, line)
    end

    for c, r in pairs(t) do
            if string.sub(r, 4) ~= toDelete then
                    table.insert(tt, string.sub(r, 4))
            end
    end

    local nfile = io.open(file, "w+")

    for a, b in pairs(tt) do
            nfile:write(a .. ". " .. b .. "\n")
    end
end

或寻找号码:

function func(file, num)
    local t = {}
    local tt = {}
    for line in io.lines(file) do
            table.insert(t, line)
    end

    for c, r in pairs(t) do
            if c ~= num then
                    table.insert(tt, string.sub(r, 4))
            end
    end

    local nfile = io.open(file, "w+")

    for a, b in pairs(tt) do
            nfile:write(a .. ". " .. b .. "\n")
    end
end

Carefull:这会覆盖原始文件!

修改 这适用于上面的例子,没有前面的数字,你不必替换字符串。