lua字符串分割

来源:互联网 发布:男士头发护理 知乎 编辑:程序博客网 时间:2024/06/02 04:07

  最近在工作中遇到需要对字符串按某个字符分割处理,然后遇到了一下小问题,在这里介绍一下自己的处理方法和理解。

  具体问题就是:我希望将这样一个lua字符串”1.3.6.4.2.13”根据右下角的”.”将它分割之后将元素存入一个表中,如果是在C语言中,很方便地就能索引到每一个点以及元素,但是在lua中,你不能用下标的方式去访问一个字符串中的字符,也就是说 : 如果str = “1.3.6.4.2.13” , 那么str[1],str[2]这样的访问方式就是非法的,那么我需要知道下标为i的元素值应该怎么办呢?

  幸好lua提供了非常丰富的字符串库来支持这一操作,我采用的方法就是string.sub(str,start,end)

  string.sub(str,start,end)函数用法很简单,它接收三个参数,第一个就是要处理的字符串str,第二个即要返回的字符串的起始索引,第三个则是要返回的字符串的结束索引,拿上文中的字符串举例,string.sub(str,1,5)返回的就是”1.3.6”这个字符串,string.sub(str,1,6)则返回字符串”1.3.6.”,所以,想要返回一个字符的话,只要将后面两个参数设置为相同索引即可,只不过lua没有字符(char)类型,只有string类型。

  下面是我用来分割字符串的可执行代码

local str = "1.3.6.1.4.1.22.11.19.62.71"local index = {}local oid = {}for k = 1,string.len(str) do  if string.sub(str,k,k) == '.' then    table.insert(index,k)  endendtable.insert(oid,string.sub(str,1,index[1]-1))  for k=1,#index-1 do    table.insert(oid,string.sub(str,index[k]+1,index[k+1]-1))  endtable.insert(oid,string.sub(str,index[#index]+1,string.len(str)))return oid
0 0
原创粉丝点击