**1. 创建与基本操作**
- **创建**: 在 Lua 中可以通过单引号 `'` 或双引号 `" ` 来声明一个字符串:
lua
local str = "Hello World"
str2 = 'I am a string'
- **长度获取**: 使用内置函数 # 可获得字符串长度:
lua
print(#str) -- 输出:11
- **拼接**: 要连接两个或多个字符串可以使用 ".." 操作符:
lua
newStr = str .. ", from Lua!"
print(newStr)
-- 输出:"Hello World, from Lua!"
**2. 查找功能**
- **模式匹配(find)**: Lua 提供了强大的基于正则表达式的 pattern 匹配方法——string.find() 。它返回子串首次出现的位置索引以及下一个字符之后的位置索引,如果没有找到,则返回 nil。
lua
local start_pos, end_pos = string.find(str, "World")
print(start_pos, end_pos) -- 输出:7 11
- **精确查找**: 如果不需要用到复杂的模式匹配特性,也可以直接进行字面意义上的查找定位:
lua
if string.sub(str, 7, 11) == "World" then
print("Found!")
end
- **所有匹配位置 (gmatch)** : 若要找出所有符合特定模式的部分,可利用 gmatch 函数遍历结果集:
lua
for word in string.gmatch("Apple Banana Cherry", "%a+") do
print(word)
-- 分别输出 Apple、Banana 和 Cherry
end
**3. 替换操作(sub &gsub)**
- **替换部分文本(string.gsub)**: 这个函数用于全局搜索并替换符合条件的内容,默认情况下会替换全部满足条件的子串,并返回新的字符串及被替换了几次的信息:
lua
new_str = string.gsub(str, "World", "!Lua Rocks?")
print(new_str) -- 输出:“Hello !Lua Rocks?, from Lua!”
count_replaced, final_string= string.gsub(str,"l","L")
print(count_replaced,final_string) -- 输出:4,“HeLLo WorLd, froM Lua!”
- **提取/替代指定范围内的文本(string.sub)**: 此函数可用于取出或者替换原字符串中的某一段文字:
substr = string.sub(str, 8, 9) -- 获取第8位(从1开始计数)的字母
replaced_str = string.sub(str, 0, 6).. "--".. string.sub(str,-5)
-- 将原始字符串的一部分替换为新内容
```
总结来说,Lua 的字符串处理提供了丰富的 API 支持,无论是简单的检索还是复杂的数据抽取都能高效完成任务。熟练掌握这些接口对于编写高性能 Lua 程序至关重要。同时需要注意的是由于 Lua 对于内存管理的设计理念,频繁地构造大字符串时需考虑性能优化问题,如尽可能复用已存在的字符串而非重复构建等策略。