我試圖做一個Lua腳本,需要用逗號分隔的數字的輸入,並把它們轉化成字母轉換一個數字的字母對應,所以1 =一個ECT,但是我還沒有找到一種方法來這樣做很容易,因爲字符串libray輸出a = 97,所以我不知道現在要去哪裏,有什麼幫助?在Lua
Q
在Lua
3
A
回答
3
您可以使用string.byte和string.char功能:
string.char(97) == "a"
string.byte("a") == 97
如果你想從 「一」 開始(97),那麼就減去這個數字:
local function ord(char)
return string.byte(char)-string.byte("a")+1
end
這將返回1 「a」,2表示「b」等等。你可以用類似的方式處理「A」,「B」和其他。
如果您需要數到字符,那麼這樣的事情可能工作:
local function char(num)
return string.char(string.byte("a")+num-1)
end
2
僅僅只是佔AZ在ascii table.
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
0
起始值定義您的編碼爲如下:
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
並使用decode
char[t[i]]
。
+0
所以,我有'編碼= [[ABCDEFGHIJKLMNOPQRSTUVWXYZ]] I = IO。讀() 函數炭(ⅰ) 返回編碼:子(I,i)的 端 函數解碼(噸) 對於i = 1,#噸做T [1] =炭[I]端 返回表。 concat(t) end print(char(i))'事情是如果我輸入1,2錯誤 – Alexwall
1
或者這些答案,你可以每個字母在表中存儲和簡單的索引的表:
local letters = {'a','b','c'} --Finish
print(letters[1], letters[2], letters[3])
相關問題
- 1. 在Lua
- 2. 在Lua
- 3. 在Lua
- 4. 在Lua
- 5. 在Lua
- 6. 在Lua
- 7. 在Lua
- 8. 在LUA
- 9. 在Lua
- 10. 在Lua
- 11. 如果在Lua
- 12. 如何在Lua
- 13. 表值在Lua
- 14. 創建在Lua
- 15. lua_unref在Lua
- 16. 串接在Lua
- 17. 日期在Lua
- 18. Lua在iPhone上?
- 19. 打印在Lua
- 20. 從Lua到Lua的Lua嵌套表
- 21. 把「%」在string.gsub()在Lua
- 22. 的Lua在Visual Basic.net
- 23. 問題與在Lua
- 24. 繼承了在Lua
- 25. 差異「和」在Lua
- 26. quasiquote /報價在lua?
- 27. 的Lua - 在功能
- 28. 在C++ LUA對象
- 29. Lua。尋找在dhcp.leases
- 30. HTTP GET在LUA/NodeMCU
'string.char(0.5)== 「1/2」'? [/s](https://en.wikipedia.org/wiki/Sarcasm) – Anko
這是做我想要什麼反轉,我想數爲char不是char到數。 – Alexwall
使用我列出的函數來設計它並不困難;添加到答案中(假設'num'從字符「a」的1開始)。 –