我正在尝试制作一个lua脚本,它接受逗号分隔的数字输入,然后将它们变成字母,所以1 =等等,但是我还没有找到一种方法来轻松完成这个,因为字符串libray输出了= 97,所以我不知道现在去哪里,有什么帮助?
答案 0 :(得分:4)
您可以使用string.byte和string.char函数:
string.char(97) == "a"
string.byte("a") == 97
如果你想从“a”(97)开始,那么只需减去那个数字:
local function ord(char)
return string.byte(char)-string.byte("a")+1
end
这将为“a”返回1,为“b”返回2,依此类推。您可以以类似的方式处理“A”,“B”等。
如果你需要数字到字符,那么这样的事情可能有效:
local function char(num)
return string.char(string.byte("a")+num-1)
end
答案 1 :(得分:2)
仅仅考虑ascii table.
中a-z的起始值function convert(...)
local ar = {...}
local con = {}
for i,v in pairs(ar) do
table.insert(con, ("").char(v+96))
end
return con;
end
for i,v in pairs(convert(1,2,3,4)) do
print(v)
end
答案 2 :(得分:1)
除了这些答案之外,您还可以将每个字母存储在表格中,然后将表格编入索引:
local letters = {'a','b','c'} --Finish
print(letters[1], letters[2], letters[3])
答案 3 :(得分:0)
按如下方式定义编码:
++level;
leftViewUtil(root.left, level, max, result);
leftViewUtil(root.right, level, max, result);
以任何你想要的顺序。 然后按如下方式使用
encoding = [[abc...]]
如果数字列表在表格中,那么您可以使用
function char(i)
return encoding:sub(i,i)
end
您还可以将解码保存在表格中:
function decode(t)
for i=1,#t do t[i]=char(t[i]) end
return table.concat(t)
end
并在char = {}
for i=1,#encoding do char[i]=encoding:sub(i,i) end
中使用char[t[i]]
。