如何倒序查找字符

现在有这样一个需求,有一个字符串,需要查找字符i最后出现的位置,不过相对于其他语言来说,Lua并没有提供这一操作,那么如何是好?


  现在有这样几个方法:

  string.sub(str, i ,j)

    功能:截取str以i开始j结束的部分

  string.reverse(str)

    功能:将str倒序输出

  string.len(str)

    功能:返回str的长度

  string.find(str, pattern, init, plain) 

    功能:查找到指定字符在str的起始位置。其中str为源字符串,pattern为需要查找的字符,init为开始查找的位置,在Lua中,"1,2"表示从开始起,"-1,-2"表示从结尾起。


  好了,了解了这几字符串操作方法就可以来做事了:

  可以这么来构想,如果要查询字符i在字符串str中最后出现的位置,可以先把str反转,然后从头开始查找i的位置,再用字符串str的长度减去反转后查找到的位置(这里得加上1),这样就可以知道字符i在字符串str中倒序查找的位置了。

  试一试吧:

复制代码

 1 str = "/www/var/tmp/temp.lua"
 2 
 3 function subString(str, k)
 4     ts = string.reverse(str)    //反转字符串str
 5     _, i = string.find(ts, k)   //获取k在反转后的str字符串ts的位置
 6     m = string.len(ts) - i + 1   //获取k在字符串str中的位置
 7 
 8     return string.sub(str, 1, m)  //返回字符串str字符k之前的部分
 9 end
10 
11 print(subString(str, "/"))

复制代码

  输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值