阅读模式:

lua切割字符串成table数组

查看:8662  回复:0  类型:  来源:php自学网  标签 lua

        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次

分享到:
0 0

发布评论:


登录:
  表情:
提交