Lua 的 String 模块 提供了强大的字符串处理功能,主要通过 string 模块实现。以下是 Lua string 模块的主要功能和用法:
基础字符串操作
字符串连接
- 使用
..操作符连接字符串
localstr="Hello".." ".."World"-- 结果为 "Hello World"- 使用
字符串长度
- 使用
#操作符获取字符串长度
locallen=#"Lua"-- 结果为 3- 使用
常用字符串函数
string.sub(s, i [, j])- 截取字符串 s 从位置 i 到 j 的子串
- 示例:
locals="Programming"print(string.sub(s,4,7))-- 输出 "gram"string.find(s, pattern [, init [, plain]])- 在字符串 s 中查找匹配 pattern 的位置
- 示例:
localstart,finish=string.find("Hello Lua","Lua")-- start=7, finish=9string.match(s, pattern [, init])- 返回字符串 s 中匹配 pattern 的第一个子串
- 示例:
localword=string.match("Lua is great","%a+")-- 返回 "Lua"string.gsub(s, pattern, repl [, n])- 全局替换字符串中的匹配项
- 示例:
locals=string.gsub("Lua Lua Lua","Lua","Python",2)-- 结果为 "Python Python Lua"
字符串格式化
string.format(formatstring, ...)- 类似 C 的 printf 格式化输出
- 示例:
localformatted=string.format("Value: %.2f",3.14159)-- 结果为 "Value: 3.14"
字符串转换
string.upper(s)- 将字符串转换为大写
print(string.upper("lua"))-- 输出 "LUA"string.lower(s)- 将字符串转换为小写
print(string.lower("LUA"))-- 输出 "lua"
字符串模式匹配(正则表达式)
Lua 提供了轻量级的模式匹配功能:
字符类
%a: 字母%d: 数字%s: 空白字符%w: 字母数字
模式修饰符
+: 1次或多次*: 0次或多次-: 最小匹配?: 0或1次
示例:
localdate="2023-05-15"localyear,month,day=string.match(date,"(%d+)-(%d+)-(%d+)")-- year="2023", month="05", day="15"字符串缓冲区
对于大量字符串拼接,可以使用表作为缓冲区:
localbuf={}fori=1,100dobuf[#buf+1]="line "..iendlocalresult=table.concat(buf,"\n")UTF-8 支持(Lua 5.3+)
Lua 5.3 及以上版本增加了 UTF-8 支持:
utf8.len(s): 获取 UTF-8 字符串长度utf8.codepoint(s, i, j): 获取码点utf8.char(...): 从码点创建字符串
locallen=utf8.len("你好")-- 结果为 2Lua 的字符串处理功能强大而高效,是处理文本数据的理想选择。