码迷,mamicode.com
首页 > 其他好文 > 详细

lua拆分字符串实现及lua源码查看

时间:2015-01-29 16:02:11      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

lua字符串拆分实现

--字符串分割 
function splitStr(content, token)
    if not content or not token then return end
    local strArray = {}
    local i = 1
    local contentLen = string.len(content)
    while true do
        -- true是用来避开string.find函数对特殊字符检查 特殊字符 "^$*+?.([%-"
        local beginPos, endPos = string.find(content, token, 1, true) 
        if not beginPos then
            strArray[i] = string.sub(content, 1, contentLen)
            break
        end
        strArray[i] = string.sub(content, 1, beginPos-1)
        content = string.sub(content, endPos+1, contentLen)
        contentLen = contentLen - endPos
        i = i + 1
    end
    return strArray
end

开始实现的时候,遇到一个问题,如果用 "++" 这样的特殊字符作为token发现,string.find有问题(遇到"+"也会返回,而不是遇到"++")

在网上查了一下,也没查到什么,既然有lua的源代码为什么不去看下,要检讨啊

后面查看lua 源代码的 lstrlib.c文件(这个是 lua string库的源代码), 发现string.find代码中有特殊字符检查,对特殊字符进行处理,所以导致了这个错误,

不过string.find函数可以传入 第4个参数 传入true  就能绕过特殊字符检查。所以就没问题了。


如果想查看lua的源代码,查看 l*lib.c 文件。 如: ltablib.c 就是 table的库代码  liolib.c 就是io文件操作的库代码

lua拆分字符串实现及lua源码查看

标签:

原文地址:http://blog.csdn.net/tutuboke/article/details/43271387

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!