现在的位置: 首页lua>正文
rss
lua实现split字符串分隔 [原创]
2012年04月18日 lua 评论数 1 ⁄ 被围观 28,183 次+

lua并不象其它许多"大而全"的语言那样,包括很多功能,比如网络通讯、图形界面等。但是lua可以很容易地被扩展:由宿主语言(通常是c或c++)提供这些功能,lua可以使用它们,就像是本来就内置的功能一样。lua只包括一个精简的核心和最基本的库。这使得lua体积小、启动速度快,从而适合嵌入在别的程序里。因此在lua中并没有其他语言那样多的系统函数。习惯了其他语言的字符串分割函数,与是就自己写了一个,记录在此,以备使用.
下面在简单介绍下lua:

lua 是一个小巧的脚本语言。作者是巴西人。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。

lua脚本可以很容易的被c/c++代码调用,也可以反过来调用c/c++的函数,这使得lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替xml,ini等文件格式,并且更容易理解和维护。

lua由标准c编写而成,代码简洁优美,几乎在所有操作系统和平台上都可以编译,运行。
一个完整的lua解释器不过200k,在目前所有脚本引擎中,lua的速度是最快的。这一切都决定了lua是作为嵌入式脚本的最佳选择。

  1. functionsplit(str,delim,maxnb)
  2. --eliminatebadcases...
  3. ifstring.find(str,delim)==nilthen
  4. return{str}
  5. end
  6. ifmaxnb==nilormaxnb<1then
  7. maxnb=0--nolimit
  8. end
  9. localresult={}
  10. localpat="(.-)"..delim.."()"
  11. localnb=0
  12. locallastpos
  13. forpart,posinstring.gfind(str,pat)do
  14. nb=nb+1
  15. result[nb]=part
  16. lastpos=pos
  17. ifnb==maxnbthenbreakend
  18. end
  19. --handlethelastfield
  20. ifnb~=maxnbthen
  21. result[nb+1]=string.sub(str,lastpos)
  22. end
  23. returnresult
  24. end

测试如下图:(其中用到了之前写的pring_r()函数,可参考:/22/1036.html

本文地址:/12/1117.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog
 

目前有 1 条留言 其中:访客:1 条, 博主:0 条

  1. bandit_c : 2012年07月10日16:19:19  1楼

    – 分隔字符串
    function string:split(sep)
    local sep, fields = sep or “\t”, {}
    local pattern = string.format(“([^%s]+)”, sep)
    self:gsub(pattern, function(c) fields[#fields+1] = c end)
    return fields
    end