一个功能强大的 Lua 工具库,提供 100+ 个实用函数,涵盖字符串处理、时间转换、表操作、URL 处理、进制转换、数据库操作等多个领域。
- 🚀 轻量级: 纯 Lua 实现,无外部依赖
- 📦 功能丰富: 100+ 个实用函数
- 🧪 测试完善: 100+ 个单元测试,100% 通过率
- 🌍 跨平台: 支持 Windows/Linux/macOS
- 🔧 易于使用: 简洁的 API 设计
formatNumberToWan(num)- 数字格式化为万单位
stringSplit(fullString, separator)- 字符串分割trimString(str)- 删除字符串内所有空格trimSpace(str)- 去除首尾空白(空格、制表等)subString(inputstr, len)- 按字符数截取字符串(支持中文)getStringLen(inputstr)- 计算字符串显示长度(中文算 2)cutStringLast(str)- 删除最后一个字符findString(str, findStr)- 查找子串isStringEmpty(str)- 检查字符串是否为空
checkSymbol(str)- 检查字符串中是否带有标点符号replaceSymbol(str)- 替换特殊符号checkUnlawfulString(str)- 检查非法字符串checkTableUnlawfulString(args)- 检查表中的非法字符串
checkIdCard(str)- 身份证号码验证getIdCardAge(data)- 根据身份证获取年龄
getRandomAscII(len)- 生成随机 ASCII 字符串getRandomNumString(len)- 生成随机数字字符串
tableRemoveAll(tab, removeValues)- 删除表中指定值tableDuplicate(tab)- 表去重countTable(tab)- 计算表元素个数isTableEmpty(tab)- 检查表是否为空isExistsInTable(list, value)- 检查值是否在表中compareTable(tab1, tab2)- 比较两个表是否相同deepCopy(st)- 深拷贝表showTable(tab, space)- 打印表内容removeFromTable(src, vals)- 从表中删除指定值
hasEmoji(inputstr)- 检查是否包含emojihasEmojiPro(inputstr)- 专业版 emoji 检查emojiPos(inputstr)- 获取 emoji 位置deleteEmojiFromString(str)- 从字符串中删除 emoji
stringToTable(str)- 字符串按 UTF-8 字符拆成表tableToString(tab, separator)- 表用分隔符拼成字符串stringToArray(str, separator)- 字符串按分隔符拆成数组(等同 stringSplit)
unicodeToUtf8(str)- \uXXXX 转义串转 UTF-8utf8ToUnicode(str)- UTF-8 转 \uXXXX 转义串htmlEntitiesToUtf8(str)- HTML 数字实体({)转 UTF-8
secToDate(second)- 秒数/时间戳转日期时间字符串("YYYY-MM-DD HH:MM:SS")dateToSec(date)- 日期字符串转秒数stringTimeToDateTime(stringTime)- 字符串时间转日期时间表secToDateTime(second)- 秒数转日期时间表dateTimeToStringTime(dateTime)- 日期时间表转字符串compareTime(time1, time2)- 比较时间ifTimeInZone(time, startTime, endTime)- 检查时间是否在范围内isSameDay(time1, time2)- 检查是否同一天overOneDay(date)- 检查是否超过一天getTime(time)- 获取时间getDate(time)- 获取日期getTimeRaw(time)- 获取原始时间
numToBool(num)- 数字转布尔值stringToBool(str)- 字符串转布尔值toInt(val)- 转换为整数isNumber(num)- 检查是否为数字safeToNum(str)- 安全转换为数字safeTableToNum(tab)- 表安全转换为数字
urlEncode(s)- URL 编码urlDecode(s)- URL 解码tableToUrl(tab, split, symbol)- 表转 URL 参数urlToTable(url)- URL 转表urlParamToTable(url, split, symbol)- URL 参数转表urlParamToTableToNum(url)- URL 参数转数字表urlParamToItemStruct(url)- URL 参数转结构体
bubbleSort(tab, key)- 冒泡排序antiBubbleSort(tab, key)- 反向冒泡排序
getIpAddressInfo(ipAddress)- 获取 IP 地址信息
binToHex(s)- 二进制转十六进制hexToBin(hexstr)- 十六进制转二进制strToHex(hex)- 字符串转十六进制hexToStr(str)- 十六进制转字符串
tableToXml(tab)- 表转 XMLxmlToTable(text)- XML 转表tableToJson(tab)- 表转 JSONjsonToTable(text)- JSON 转表cjsonEncode(tab)- CJSON 编码cjsonDecode(text)- CJSON 解码
createInsertSQL(tableName, argsTable)- 创建插入 SQLcreateUpdateSQL(tableName, argsTable, whereTable)- 创建更新 SQLcreateFullUpdateSQL(tableName, set, where)- 创建完整更新 SQLcreateDeleteSQL(tableName, whereTable)- 创建删除SQLcreateSelectSQL(tableName, fields, whereTable)- 创建查询 SQLcreateFullSelectSQL(tableName, fields, where)- 创建完整查询 SQLcreateReplaceSQL(tableName, argsTable)- 创建替换SQLdbSafeCheck(sqlres)- 数据库安全检查
redisTableToLuaTable(res)- Redis 表转 Lua 表redisTableToLuaTable2(res)- Redis 表转 Lua 表(版本 2)
readFile(path)- 读取文件writeFile(fileName, logHead, str)- 写入文件getFilePath(filename)- 获取文件路径getFileName(filename)- 获取文件名getFileNameWithoutExtension(filename)- 获取无扩展名文件名getFileExtension(filename)- 获取文件扩展名
writeLog(fileName, ...)- 写入日志writeMsgLog(fileName, ...)- 写入消息日志
startStopWatch()- 开始计时stopStopWatch(stopWatch, text)- 停止计时showDebugStack()- 显示调试堆栈
isSuccess(successRate)- 检查成功率makeWxSign(args, key)- 生成微信签名getFakeRandomUserCode(userID)- 生成伪随机用户码getUserIDByCode(code)- 根据伪随机号推算 userID
# 将lion.lua复制到你的项目目录
cp lion.lua /path/to/your/project/luarocks install lionlocal lion = require("lion")
-- 数字格式化
local result = lion.formatNumberToWan(15000)
print(result) -- 输出: "1万"
-- 字符串分割
local parts = lion.stringSplit("a,b,c", ",")
print(parts[1]) -- 输出: "a"
-- 时间转换
local timestamp = lion.dateToSec("2021-01-01 00:00:00")
local dateStr = lion.secToDate(timestamp)
print(dateStr) -- 输出: "2021-01-01 00:00:00"
-- 表操作
local tab = {1, 2, 3, 2, 1}
local uniqueTab = lion.tableDuplicate(tab)
print(#uniqueTab) -- 输出: 3
-- URL编码
local encoded = lion.urlEncode("你好世界")
print(encoded) -- 输出编码后的字符串-- 身份证验证
local isValid = lion.checkIdCard("11010519491231002X")
if isValid then
local age = lion.getIdCardAge("11010519491231002X")
print("年龄:", age)
end
-- Emoji处理
local text = "Hello 😊 World"
if lion.hasEmoji(text) then
local cleanText = lion.deleteEmojiFromString(text)
print(cleanText) -- 输出: "Hello World"
end
-- 数据库SQL生成
local insertSQL = lion.createInsertSQL("users", {
name = "张三",
age = 25,
email = "[email protected]"
})
print(insertSQL)
-- 输出: INSERT INTO users (name, age, email) VALUES ('张三', 25, '[email protected]')# Windows(推荐 lua55.exe)
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
lua55.exe test_lion.lua
# Linux/macOS
lua test_lion.lua运行 lua55.exe test_lion.lua(Windows)或 lua test_lion.lua(Linux/macOS)后,将输出总测试数、通过数、失败数与通过率。当前约 98 个用例,通过率 100%。
- Lua 5.1 或更高版本
- 可选: cjson(用于JSON处理)
欢迎提交Issue和Pull Request!
- Fork本仓库
- 创建你的特性分支 (
git checkout -b feature/AmazingFeature) - 提交你的更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个Pull Request
- 命名约定:函数与参数使用 camelCase;转换类 API 使用「源To目标」风格(如
secToDate、stringToTable、tableToJson) - 遵循现有代码风格
- 添加适当注释
- 为新功能编写测试用例
- 确保所有测试通过
MIT License
A: 在 Windows PowerShell 中运行测试前,设置输出编码为UTF-8:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8A: 确保使用服务器本地时区,不要硬编码特定时区的时间戳。
A: 在 lion.lua 中添加函数,并在 test_lion.lua 中添加对应的测试用例。