以下代码将表格格式化为可打印字符串,但我觉得这样做可以轻松完成。
function printFormat(table)
local str = ""
for key, value in pairs(table) do
if value == 1 then
str = str .. string.gsub(value, 1, "A, ") -- Replaces 1 with A
elseif value == 2 then
str = str .. string.gsub(value, 2, "B, ") -- Replaces 2 with B
elseif value == 3 then
str = str .. string.gsub(value, 3, "C, ") -- Replaces 3 with C
elseif value == 4 then
str = str .. string.gsub(value, 4, "D, ") -- Replaces 4 with D
end
end
str = string.sub(str, 1, #str - 2) -- Removes useless chars at the end (last comma and last whitespace)
str = "<font color=\"#FFFFFF\">" .. str .. "</font>" -- colors the string
print(str)
end
local myTable = {1,4,3,2,3,2,1,3,4,2,2,...}
printFormat(myTable)
有没有办法使用oneliner而不必遍历每个索引并进行更改?
或者让代码更紧凑?
答案 0 :(得分:0)
您可以使用帮助程序表替换多个if
语句:
local chars = {"A", "B", "C", "D"}
for _, v in ipairs(t) do
str = str .. chars[v] .. ", "
end
或者,如果1
到4
以上,请尝试以下操作:
for _, v in ipairs(t) do
str = str .. string.char(string.byte('A') + v) .. ", "
end
答案 1 :(得分:0)
table.concat
。string.gsub
可以使用替换表执行替换。function printFormat( tInput )
local sReturn = table.concat( tInput, ', ' )
sReturn = sReturn:gsub( '%d', {['1'] = 'A', ...} ) -- update table accordingly
return '<font color="#FFFFFF">' .. str .. "</font>"
end
之类的名称作为您自己的变量。因此:
return '<font color="#FFFFFF">' .. ( table.concat(tInput, ', ') ):gsub( '%d', {['1'] = 'A', ...} )
并且,对于一个班轮:
{{1}}