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

table

Categories:

Updated: