现在有这样一个需求,有一个字符串,需要查找字符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中倒序查找的位置了。

  试一试吧:

 str = "/www/var/tmp/temp.lua"

 function subString(str, k)
ts = string.reverse(str)    //反转字符串str
_, i = string.find(ts, k)   //获取k在反转后的str字符串ts的位置
m = string.len(ts) - i + 1   //获取k在字符串str中的位置 return string.sub(str, , m) //返回字符串str字符k之前的部分
end print(subString(str, "/"))

  输出:

【lua】如何倒序查找字符的更多相关文章

  1. [C++] 习题 2.18 倒序查找字串

    目录 前置技能 字符串 KMP 算法 需求描述 概要设计 具体实现 string.cpp strmatching.cpp main.cpp 倒序查找字串: 设计一个算法,在串 str 中查找字串 su ...

  2. Swift3.0语言教程查找字符集和子字符串

    Swift3.0语言教程查找字符集和子字符串 Swift3.0语言教程查找字符集和子字符串,在字符串中当字符内容很多时,我们就需要使用到查找字符集或者子字符串的方法.以下我们将讲解3种查找字符集和子字 ...

  3. Oracle 截取、查找字符函数(持续更新)

    整理一些常用的截取.查找字符函数: 1.查找某一个字符串中某一个字符(串)出现的次数 SELECT LENGTH(REGEXP_REPLACE(REPLACE('anne<br>lily& ...

  4. JavaScript 字符串函数 之查找字符方法(一)

    1.JavaScript查找字符方法   首先看一张 有关字符串函数的查找字符的方法图 接下里补充里面的方法说明 2.charAt()     charAt() 方法返回字符串中指定位置的字符 语法 ...

  5. Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化

    导入 之前都是断断续续的看了一些于如何使用android开发的文章.资料等,到目前位置很多基础的东西都不清楚,于是去学习了别人的课程,才了认识了R类.findViewById方法查找组件.项目引入资源 ...

  6. C 语言实例 - 查找字符在字符串中出现的次数

    C 语言实例 - 查找字符在字符串中出现的次数 C 语言实例 C 语言实例 查找字符在字符串中的起始位置(索引值从 开始). 实例 #include <stdio.h> int main( ...

  7. Linux grep 查找字符所在文件(grep详解)

    查找字符所在文件 grep -ir "S_ROLE"  ./* -i 不区分大小写 -r 查找字符出处 -a   --text   #不要忽略二进制的数据. -A<显示行数& ...

  8. Linux shell -查找字符(find,xargs,grep)

    在当前目录下查找含有jmxremote字符的文件 test@>find . -type f|xargs grep "jmxremote" . 当前目录 -type 查找文件类 ...

  9. C语言学习之我见-memchr()内存查找字符函数

    memchr()内存查找字符函数:主要用于从内存中查找自己需要的字符位置. (1)函数原型: void *memchr(const void *_Buf ,int _Val,size_t _MaxCo ...

随机推荐

  1. sheel远程执行

    https://www.cnblogs.com/softidea/p/6855045.html shell远程执行: 经常需要远程到其他节点上执行一些shell命令,如果分别ssh到每台主机上再去执行 ...

  2. JVM 方法调用之解析

    方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还没有涉及到方法内部的具体运行过程.在程序运行时,进行方法调用是最普遍最频繁的操作,但Class文件 ...

  3. delphi Ini读写

    try ini := TIniFile.Create(GetCurrentDir+'\BackServiceSetting.ini'); {ini 对象建立需要文件路径参数, 如果缺少路径会默认Win ...

  4. [Postgres]合并多行到一列(转)

    转自http://csk83.sinaapp.com/?p=104 在实际应用中常常遇见这样的情况,见下表,我们现在需要统计出来每年每个人的工资总和以及发放月份. user_name year mon ...

  5. Windows下Mongodb安装及配置(转载)

    转载(https://blog.csdn.net/liang377122210/article/details/79062681) MongoDB的安装很简单,设置好安装路径后,一直Next直到安装结 ...

  6. sonar资料

    看过的sonar比较好的在线参考资料(自认为): 1.<使用 Sonar 进行代码质量管理>>,地址:http://www.ibm.com/developerworks/cn/jav ...

  7. java 统计字符串中子字符串个数

    方法一: public class StatisticalStringNumber1 { public static void main(String args[]){ String string=& ...

  8. Android 增量更新研究

    Android 增量更新实例(Smart App Updates) http://blog.csdn.net/duguang77/article/details/17676797 Android AP ...

  9. [网络流24题][CTSC1999] 家园

    题目链接:戳我 对于这种一个点(表面意义上的一个点,比如说一个位置)对应多种情况的(比如说随着时间的推移有着不同的状态,而且这种状态>2),我们考虑在类似于分层图上面跑网络流. 比如说这道题,周 ...

  10. django中orm的简单操作

    数据库模型 from django.db import models # Create your models here. from django.db import models # Create ...