openresty简记
LUA语言-openresty
有些方法能被JIT优化有些则不能,这个网址有说明
字符串操作
字符串索引全部从1开始计数
获得字符串长度
string.len(str);
#str;
#str是上述函数的语法糖 但是提倡使用#的方式,Lua字符串是单独存放长度属性的,使用#可以直接取.
查找字符串
string.find(str,p[,init[,plain]);
- str:被查找的字符串
- p:查找的字符串或者正则表达式
- init:从哪里开始查找 默认为1
- plain:默认为false,当为true时,会将p当纯字符串看待,不具备正则匹配功能,注意:只有true的时候,能被JIT编译优化 如果找不到p,则返回nil。
大小写转换
string.upper(str);
string.lower(str);
切割字符串
string.sub(str,start[,end]);
- str:被切割的字符串
- start:开始位置
- end:结束位置 默认-1 也就是最后一个 可以传入负数,负数为从后往前数
反转字符串
string.reverse(str);
替换字符串
string.gsub(str,find,replace[, count]);
- str:被替换的字符串
- find:被替换的字符串
- replace:替换的字符串
- count:最大替换次数
return:
- str:替换后的字符串
- count: 替换了多少次
根据指定参数,分解字符串成数组
function split(split, str)
local str_split_tab = {}
while true do
local idx = string.find(str,split,1,true);
if nil~=idx then
local insert_str = '';
if 1==idx then
--踢掉分割字符串
insert_str = string.sub(str, 1,idx + #split - 1);
else
--提取插入字符串
insert_str = string.sub(str, 1,idx - 1);
end
if (insert_str ~= split) and (nil ~= insert_str or '' ~= insert_str) then
table.insert(str_split_tab,insert_str);
end
str = string.sub(str,idx + #split,-1);
else
if nil ~= str or '' ~= str then
table.insert(str_split_tab,str);
end
break;
end
end
return str_split_tab;
end