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

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. function Split(str, delim, maxNb)   
  2.     -- Eliminate bad cases...   
  3.     if string.find(str, delim) == nil then  
  4.         return { str }  
  5.     end  
  6.     if maxNb == nil or maxNb < 1 then  
  7.         maxNb = 0    -- No limit   
  8.     end  
  9.     local result = {}  
  10.     local pat = "(.-)" .. delim .. "()"   
  11.     local nb = 0  
  12.     local lastPos   
  13.     for part, pos in string.gfind(str, pat) do  
  14.         nb = nb + 1  
  15.         result[nb] = part   
  16.         lastPos = pos   
  17.         if nb == maxNb then break end  
  18.     end  
  19.     -- Handle the last field   
  20.     if nb ~= maxNb then  
  21.         result[nb + 1] = string.sub(str, lastPos)   
  22.     end  
  23.     return result   
  24. end  

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

本文地址:http://www.92csz.com/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