lua切割字符串成table数组函数。使用gmatch正则进行匹配字符串所有符合的字符,并把匹配的字符放入table中。
一、split
function _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次