local function NumToCN(num)
local size = #tostring(num)
local CN = ""
local StrCN = {"一","二","三","四","五","六","七","八","九"}
for i = 1 , size do
CN = CN .. StrCN[tonumber(string.sub(tostring(num), i , i))]
end
return CN
end
print(NumToCN(56665))
2047Lua 运算符
若要在Lua中实现 C/C++ 中的三目运算
condition ? result1 : result2
可以简单地这样:
if condition then
return result1
else
return result2
end
2048Lua 字符串
将阿拉伯数字转换为语文汉字数字:
local function NumToCN(num) local size = #tostring(num) local CN = "" local StrCN = {"一","二","三","四","五","六","七","八","九"} for i = 1 , size do CN = CN .. StrCN[tonumber(string.sub(tostring(num), i , i))] end return CN end print(NumToCN(56665))2047Lua 运算符
若要在Lua中实现 C/C++ 中的三目运算
可以简单地这样:
if condition then return result1 else return result2 end但是要想使用 Lua 的逻辑运算符实现就需要一些小技巧,写法如下(具体可查看Lua 中的三目运算符)
(condition and {result1} or {result2})[1]2046Lua 运算符
取长度操作符写作一元操作 #
table
t的长度被定义成一个整数下标n。 它满足t[n]不是 nil 而t[n+1]为 nil; 此外,如果t[1]为 nil ,n就可能是零。 对于常规的数组,里面从 1 到n放着一些非空的值的时候, 它的长度就精确的为n,即最后一个值的下标。 如果数组有一个“空洞” (就是说,nil 值被夹在非空值之间), 那么#t可能是指向任何一个是 nil 值的前一个位置的下标 (就是说,任何一个nil 值都有可能被当成数组的结束)。tab4 = {} tab4[1] = "1" tab4[2] = nil tab4[3] = "2" tab4[4] = nil print("tab4的长度", #tab4) --tab4的长度 1 tab5 = {} tab5[1] = "1" tab5[2] = nil tab5[3] = "2" tab5[4] = "4" print("tab5的长度", #tab5) --tab5的长度 4 tab6 = {1, nil, 3} print("tab6的长度", #tab6) --tab6的长度 3 tab6 = {1, nil, 3, nil} print("tab6的长度", #tab6) --tab6的长度 12045Lua 运算符
下标越过 1 位以上,长度还是为 2:
tab3={} tab3[1]="1" tab3[2]="2" tab3[5]="5" print("tab3的长度",#tab3)输出:
2044Lua 运算符
其他运算符 —— #
在获取表的长度时,根据的是表的最大索引的值:
tab1 = {"1","2"} print("tab1长度"..#tab1) tab2 = {key1="1","2"} print("tab2长度"..#tab2) tab3 = {} tab3[1]="1" tab3[2]="2" tab3[4]="4" print("tab3长度"..#tab3)输出: