我想知道如何删除特定的文件行?
示例:file.txt
假设我要删除第3行,那么文件将是:
我不想删除这些行,需要整理并避免在文件中出现空行!
答案 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:这会覆盖原始文件!
修改强> 这适用于上面的例子,没有前面的数字,你不必替换字符串。