Lua简单使用,lua工具类编写,lua表的使用
在项目中封装一些工具类,方便以后项目的使用。
项目中的工具类编写,以Utils.lua为例:首先创建一个表。Utils = Utils or {}
寻找数组中某个值的下标
Utils = Utils or {}
--寻找数组中某个值的下标,仅在table中每个值都不一样时有效
Utils.findIdxByValue = function(arr,value)
local tempArr = arr
local tempValue = value
for i,v in ipairs(tempArr) do
if v == tempValue then
return i
end
end
end
使用方法如下图:
将字符串类型转变为table
--将string转为table1
function Utils.stringToTable(str, isTableList)
if str=="" or str==nil then
return {}
end
local ret, msg
if isTableList then
ret, msg = loadstring(string.format("return {%s}", str))
else
ret, msg = loadstring(string.format("return %s", str))
end
if not ret then
LogManager:debugLog("原文内容 ",str)
LogManager:debugLog("loadstring error", msg)
return nil
end
return ret()
end
使用方式跟上面一样的,看下图
去除字符串两边的空格
--去除字符串两边空格
function Utils.trim(s) return (string.gsub(s, "^%s*(.-)%s*$", "%1")) end
根据分隔符去切割字符串
--根据分隔符分割字符串,返回分割后的table
Utils.split = function(s, delim)
if not s then
return {}
end
assert (type (delim) == "string" and string.len (delim) > 0, "bad delimiter")
local start = 1
local t = {}
while true do
local pos = string.find(s, delim, start, true)
if not pos then
break
end
table.insert (t, string.sub (s, start, pos - 1))
start = pos + string.len (delim)
end
table.insert (t, string.sub (s, start))
return t
end
使用方法如下,
local cur_list = Utils.split(str,"-"),当然delim可以是“|【】-。”等等
当然还有其他工具类,还有很多,等以后有时间慢慢添加。
--获取两点之间的距离
Utils.getDistance = function(pOne, pTwo)
if not pOne then
return 0
end
if not pTwo then
return 0
end
local dx = pTwo.x - pOne.x
local dy = pTwo.y - pOne.y
return math.sqrt(dx * dx + dy * dy)
end
--四舍五入
Utils.roundOff = function(num)
local integer, decimal = math.modf(num)
if decimal >= 0.5 then
return integer + 1
else
return integer
end
end
--保留两位小数
Utils.reserveTwo = function(num)
return tonumber(string.format("%.2f", num))
end
-- 是否中文字
Utils.isCn = function(c)
return c:byte() > 128
end
-- 判断资源是否为jpg
function Utils:checkIsJpeg(filePath)
local isJpeg = false
local inpFile = io.open(filePath, "rb")
-- 读取前三位
local bytes = inpFile:read(3)
if bytes then
local fileHeadIden = ""
for _, b in ipairs{string.byte(bytes, 1, -1)} do
local val = string.format("%02X", b)
fileHeadIden = fileHeadIden..val
end
if string.upper(fileHeadIden) == "FFD8FF" then
isJpeg = true
else
print("==> filePath : "..tostring(filePath)..", fileHeadIden : "..tostring(fileHeadIden))
end
end
inpFile:close()
return isJpeg
end