Lua-字符串拼接
字符串拼接方式
Lua语法糖..
使用..
很容易做字符串拼接,只是要注意几点:
- 第一个拼接元素必须是字符串,比如
1.."a"
将会报错 - 后续元素必须是字符串或数字
s = a..b..c..d
并不是每一次..
连接都产生一个新的字符串,下边的写法才会产生多个新字符串local s = "" for i = 1,1000 do s = s .. i end
table.concat(table, sep, start, end)
Lua table模块内置的concat函数,将table数组部分从start到end位置元素以指定sep连接起来。在大规模字符串合并时,应尽量选择这种方式
使用注意:
- 链接元素必须都是字符串或者数字
string.format(fmt, […])
和C语言的sprintf
类似,可以将不同类型的数据格式化成字符串。
string.rep(str, n)
对某一个字符串或者数字做N次拼接
总结
这四种字符串连接方式,其实实现方式差不多,只是table.concat
要先创建一个table
再去拼接,string.format
需要解析字符串,这些可能会有点耗时,但我觉得影响并不大。在选择连接方式时,只需考虑易用和代码简洁性就可以了。下面有些小建议,仅供参考:
- 简单且子串较少的字符串拼接,用 ..
local a = "a" .. 1 .. 2
- 子串多尽量用
table.concat
local t = {"a", "b", "c", "d"}
local s = table.concat(t)
- 有数据格式转换或字符宽度、对齐等要求的用
string.format
local a=1
local b="abc"
local s = string.format("id:%02d, name:%04s", a, b)
- 重复的字符串拼接用
string.rep
string.rep("abc", 3)