【lua】如何倒序查找字符


  現在有這樣一個需求,有一個字符串,需要查找字符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, "/"))

  輸出:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM