H7-TOOL的LUA小程序教程第2期:變量,循環,函數,條件語句和字符串相關API

LUA腳本的好處是用戶可以根據自己註冊的一批API(當前TOOL已經提供了幾百個函數供大家使用),實現各種小程序,不再限制Flash裏面已經下載的程序,就跟手機安裝APP差不多,所以在H7-TOOL裏面被廣泛使用,支持在線調試運行,支持離線運行。

TOOL的LUA教程爭取做到大家可以無痛調用各種功能函數,不需要學習成本。


掌握這些基礎就夠用了。

一、註釋

註釋、多行註釋、取消多行註釋:

註釋單行

--local a = 1

 

 

註釋多行

--[[
local a = 1
--]]

 

 

取消註釋多行

---[[
local a = 1
--]]


二、變量:

變量
1.變量無需聲明
2.變量沒聲明爲nil,賦值爲nil等同於刪除
3.lua把nil,false視爲假,其他都爲true
4.Lua中的變量全是全局變量,除非用 local 顯式聲明爲局部變量
5.#ta字符串的長度,也可以獲取表格數字索引對應的個數

例子

--全局賦值
x = 1

--局部多個賦值
local x,y = 1,2

local ta = {1,2,3,name='安富萊'}
--3
print(#ta)

 

三、條件:

條件
if
and or not
>= <= == > < ~=

例子

if (a >= 0) then   --大於等於
  b = b + 1
else
  b = b - 1
end

if (a ~= 0) then   --不等於
end

if (a==b and c == 0) then --邏輯與

elseif (a~=b) then  --不等於

elseif (not a) then  --邏輯非

else

end

 


四、循環

例子

local a=10
while (a < 20)
do
   a = a + 1
   print(a)
end

local t = {1,2,3}
for i,v in pairs(t) do
    print(v)
end


--每次加1

for i=0,5,1 do
    print(i)
end


--每次減1

--5,4,3,2,1
for i=5,1,-1 do
    print(i)
end



五、函數

例子:

--聲明函數,傳遞2個參數,返回2個值得和
function add(num1, num2)
   return num1 + num2
end


--把函數賦值給一個變量,然後可以當參數傳遞

local myprint = function(str)
   print(str)
end

function say(arg1,func)
    func(arg1)
end

--www.freecls.com
say('www.freecls.com',myprint)


--可變參數

function average(...)
   result = 0
   local arg={...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   print("總共傳入 " .. #arg .. " 個數")
   return result/#arg
end
function what()
    return '安富萊','www.armlfy.com'
end

--返回多個參數
local name,url = what()
print(name,url)

 

、常用字符串函數:

string.byte(s [, i [, j]])
string.byte是用來把字符轉換成ascii數字,s爲目標字符串,i爲索引開始位置(從1開始),j爲索引結束位置
例子

--默認爲第1個返回a的ascii值
local r = string.byte('abcdefg') --97
--從索引2(b)到索引4(d)也就是分別返回bcd的ascii值
local r1,r2,r3 = string.byte('abcdefg',2,4) --98,99,100


string.char(...)
string.char是把ascii數值轉換成字符
例子

--返回98所對應的字符
local r = string.char(98) --a
--返回98,,99,100對應的字符並連在一起返回
local r = string.char(98,99,100) --abc


string.sub (s, i [, j])
截取字符串(字符串分割,字符串截取),i爲起始索引,可選參數j爲結束索引(包含),都可以爲負數,第一個字符索引爲1,最後一個字符爲-1
例子

local res,s
s = 'www.armfly.com'
res = string.sub(s,5)     --armfly.com
res = string.sub(s,5,-1)  --armfly.com

--截取後3位
res = string.sub(s,-3)    --com

--截取前3位
res = string.sub(s,1,3)   --www


string.find (s, pattern [, init [, plain]])
字符串查找函數找不到返回nil,找到了返回開始位置和結束位置,init爲從哪裏開始默認爲1,plain默認爲false表示利用模式匹配,如果設爲true則表示純文本匹配(也就是關閉正則匹配)
例子

local str = 'i love programming,11,22,%d+aa'
local s = string.find(str,'222')    --nil
s = string.find(str,'pro')  --8
s = string.find(str,",%d+")    --19(匹配到了,11)
s = string.find(str,",%d+",1,true) --25(由於關閉了模式匹配,所以匹配到了,%d+)


string.match (s, pattern [, init])
它跟string.find差不多,只不過能把捕獲匹配到的結果並返回
例子

local s,res,res1,res2
s = 'http://www.armfly.com'

--由於沒有捕獲,返回全部匹配
--結果:http://www.armfly.com
res = string.match(s,'http://%a+.%a+.com')

--如果有捕獲,則分別返回捕獲結果
--結果:www    armfly
res1,res2 = string.match(s,'http://(%a+).(%a+).com')


string.gsub (s, pattern, repl [, n])
用來做字符串替換,可選參數n代表替換多少次默認全部替換,返回替換後的字符串,也可以指定第二個返回值爲替換的次數。
例子

local s,res,res1,res2
s = 'http://www.armfly.com'

--結果:http://test.armfly.com,1
res,count = string.gsub(s,'www','test')

--捕獲替換
--結果:test.freecls.abc
res = string.gsub(s,'^http://%w+.(%w+).com$','test.%1.abc')

--w替換成t,但是隻替換2次
--結果:http://ttw.armfly.com
res = string.gsub(s,'w','t',2)


string.format (formatstring, ···)
字符串格式化類型c語言的sprintf不說廢話以例子來講解

local s = string.format('%d%s',123,'armfly')   --123armlfy

s = string.format('%0.2f',1.234343)     --1.23(保留2位)

--轉成16進制,%X爲大寫的16進制
local s = string.format('%X',140)       --8C
local s = string.format('%x',140)       --8c
local s = string.format('%04x',140)     --008c


string.len(s)
返回字符串長度=#s

string.rep(s,n)
字符串重複n次並拼接返回

string.lower(s)
轉小寫

string.upper(s)
轉大寫

string.reverse(s)
反轉字符串

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章