Lua String库

一、byte

二、char

char函数用于索引 ASCII 码。其语法如下:

1
string.char(...)

它可以接收0个或多个整数(范围为:0~255),并会返回这些整数所对应的ASCII字符所组成的字符串。当参数为空时,默认是0。我们来看如下代码:

1
2
print(string.char())
print(string.char(97,98,99))

其执行结果为:

1
2

abc

该函数适用于从具体的字节码构造出二进制字符串,其效率优于字符串连接运算符..和table.concat函数。

三、upper

四、lower

五、len

六、format

七、find

八、match

九、gmatch

十、rep

十一、sub

sub函数用于索引字符串,其语法如下:

1
string.sub(s,i[, j])

它会返回字符串s中,从索引i到索引j之间的子字符串。可选参数j的默认值为-1,表示字符串的最后位置。我们来看如下代码:

1
2
3
4
5
6
print(string.sub('Hello World',1))
print(string.sub('Hello World',1,-2))
print(string.sub('Hello World',1,5))
print(string.sub('Hello World',2,1))
print(string.sub('Hello World',-5,-1))
print(string.sub('Hello World',1,1))

其执行结果为:

1
2
3
4
5
6
Hello World
Hello Worl
Hello

World
H

我们可以看到,当i<j时,将返回一个空字符串。

十二、gsub

gsub函数用于替换字符串的内容。其语法如下:

1
string.gsub(s, p, r[, n])

它会将字符串s中的p替换成r。可选参数n,表示替换的个数,默认情况下会替换所有的p。该函数会返回两个值,第一个是替换后的新字符串,第二个是替换的个数。我们来看如下代码:

1
2
3
4
5
6
7
8
9
10
print(string.gsub('hello hello hello','h','H'))
print(string.gsub('hello hello hello','h','H', 1))
print()

local t = {}
uri = '/localhost/upstream/nginx/nginx1'
string.gsub(uri,'([^/]+)',function (c) t[#t + 1] = c end)
for k,v in ipairs(t) do
print(k,v)
end

其执行结果为:

1
2
3
4
5
6
7
Hello Hello Hello	3
Hello hello hello 1

1 localhost
2 upstream
3 nginx
4 nginx1

我们可以看到,参数p实际上是正则表达式,而参数r不仅可以是字符串,还可以是一个函数。需要注意的是,该函数不能被LuaJIT编译,只能被解释执行。因此,不推荐使用该函数,推荐使用ngx_lua模块提供的ngx.re.gsub函数。

十三、reverse

十四、参考

https://moonbingbing.gitbooks.io/openresty-best-practices/content/lua/string_library.html

https://www.lua.org/pil/20.html


Lua String库
https://kuberxy.github.io/2020/12/15/Lua String库/
作者
Mr.x
发布于
2020年12月15日
许可协议