如何在Lua中将多行字符串转换为表



我创建了一个名为fonts的字符串,它存储了系统上安装的所有字体的列表,每个字体用换行符分隔:

local font = io.popen("fc-list | cut -d ' ' -f 2- | cut -d : -f 1 | cut -d , -f 1 | sort | uniq")
if font == nil then return end
local fonts = font:read("*a")
print(fonts)
font:close()

打印的输出看起来像这样:

Latin Modern Mono
Latin Modern Mono Caps
Latin Modern Mono Light

等等。我想把它放在桌子里。我怎么能得到这样的东西:

local fonts = {
"Latin Modern Mono",
"Latin Modern Mono Caps",
"Latin Modern Mono light"
}

感谢@timrau,这是我的最终答案。该表称为fonttbl

local font = io.popen([[
fc-list | cut -d " " -f 2- | cut -d : -f 1 | cut -d , -f 1 | sort | uniq |
sed -z "$ s/n$//"
]])
if font == nil then return end
local fontstr = font:read("*a")
local pos,fonttbl = 0,{}
for st,sp in function() return string.find(fontstr, "n", pos, true) end do
table.insert(fonttbl, string.sub(fontstr, pos, st - 1))
pos = sp + 1
end
table.insert(fonttbl, string.sub(fontstr, pos))
font:close()

相关内容

  • 没有找到相关文章

最新更新