关于lua的split功能

0x01 我爱的切割


切割字符串的功能在开发中很常见,基本上都会用到。在c里面没有这个功能,需要自己的撸出来。这让习惯了python或者perl的小伙伴很蛋疼。由于目前项目基于c开发,用到split的功能,而且实际上用c实现很麻烦,正好混lua开发,所以想用lua实现。

0x02 coding


说干就干,必须要以码会友。

#!/usr/bin/lua

common = {}

-- 切割函数(split功能)
-- szFullString 待切割数据
-- szSeparator 切割判断
function common.split(szFullString, szSeparator)
  local nFindStartIndex = 1
  local nSplitIndex = 1
  local nSplitArray = {}
  while true do
    local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex)
    if not nFindLastIndex then
      nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString))
      break
    end
    nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1)
    nFindStartIndex = nFindLastIndex + string.len(szSeparator)
    nSplitIndex = nSplitIndex + 1
  end
  return nSplitArray
end

return common

由于我比较懒,所以默认我都是做封装的,比如封装成一个包,在lua上,你可以放在package里面,然后根据自己需要引入lua的包。

0x03 后记


大家都说c+lua混合性能很高,但是实际上高到什么程度我还没真心体会出来,可能比较菜鸟。还在努力中。。。在搞split的时候,就发现好多案例,最后能用的就这个。。。好吧~

推荐阅读更多精彩内容

  • 1. 写在前面 很多时候我们都需要借助一些脚本语言来为我们实现一些动态的配置,那么就会涉及到如何让脚本语言跟原生语...
    杰嗒嗒的阿杰阅读 2,462评论 10 30
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 153,444评论 22 673
  • In the last 20 years, something more fundamental has chan...
    亲爱的尾巴阅读 194评论 0 1
  • 生活总要慢慢来 譬如爱情和死亡 生活却也慢不得 譬如爱情后的婚姻和死亡前的遗言 生活原本就是个迷 才有了那么多的哲...
    木子叁皮阅读 123评论 5 4
  • 严格地说,回顾自己真正写作的时间,应该是从写微信公众号开始,也就是2016年10月月初,至今已快半年时间了,以天数...
    木华益阅读 193评论 19 13