lua切割字符串成table数组函数。使用gmatch正则进行匹配字符串所有符合的字符,并把匹配的字符放入table中。
一、splitfunction _M.split(self, str, delimiter)
if str == nil or str == '' or delimiter == nil then
return nil
end
local delimiter1 = delimiter
if delimiter == '.' or delimiter == '+' or delimiter == '*' or delimiter == '-' or delimiter == '?' or delimiter == '%' then
delimiter1 = "%"..delimiter --转义特殊字符的间隔符
end
local result = {}
for match in (str..delimiter):gmatch("(.-)"..delimiter1) do
table.insert(result, match)
end
return result
end_M:split(str, delimiter)
二、string.gmatch (s, pattern)
返回一个迭代器函数,每一次调用这个函数,返回一个在字符串s找到的下一个符合pattern描述的子串。如果参数pattern描述的字符串没有找到,迭代函数返回nil。
匹配的模式:
.(点): 与任何字符配对
%a: 与任何字母配对
%c: 与任何控制符配对(例如\n)
%d: 与任何数字配对
%l: 与任何小写字母配对
%p: 与任何标点(punctuation)配对
%s: 与空白字符配对
%u: 与任何大写字母配对
%w: 与任何字母/数字配对
%x: 与任何十六进制数配对
%z: 与任何代表0的字符配对
%x:(此处x是非字母非数字字符)与字符x配对. 主要用来处理表达式中有功能的字符 (^$()%.[]*+-?) 的配对问题, 例如 %% 与 % 配对
[数个字符类]: 与任何[]中包含的字符类配对. 例如[%w_]与任何字母/数字, 或下划线符号(_)配对 当上述的字符类用大写书写时, 表示与非此字符类的任何字符配对. 例如, %S表示与任何非空白字符配对,例如,'%A'非字母的字符
'%'':用作特殊字符的转义字符,因此 '%.' 匹配点;'%%' 匹配字符 '%' 。转义字符 '%' 不仅可以用来转义特殊字符,还可以用于所有的非字母的字符。当对一个字符有疑问的时候,为安全起见请使用转义字符转义他
+ :匹配前一字符1次或多次
* :匹配前一字符0次或多次
- :匹配前一字符0次或多次
? :匹配前一字符0次或1次