Lua简单使用,lua工具类编写,lua表的使用

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

使用方法如下图:

lua
将字符串类型转变为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

使用方式跟上面一样的,看下图
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190615171819658.png![在这里插入

去除字符串两边的空格

--去除字符串两边空格
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值