现在有这样一个需求,有一个字符串,需要查找字符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, , m) //返回字符串str字符k之前的部分
  9. end
  10.  
  11. 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. CodeForces 907F Power Tower(扩展欧拉定理)

    Priests of the Quetzalcoatl cult want to build a tower to represent a power of their god. Tower is u ...

  2. 解决安装VC6.0后出现MSDEV.EXE错误,无法用打开工程解决方法

    问题:安装VC6.0后,在打开项目或添加文件时,出现如下错误: 可能导致原因:由于Ms安装软件的兼容性问题,导致VC6.0安装不完全, 解决方法:--网上打sp6补丁的方法貌似不可用,所以可以采用另一 ...

  3. Spring Boot - Restful API

    基本用法 @GetMapping与@PostMapping不指定参数时就是指直接使用到controller一级的url就行 @GetMapping与@PathVariable对应,前者{}中的字符串和 ...

  4. MVC ASP.NET MVC5使用Area区域

    MVC  ASP.NET MVC5使用Area区域 一.为什么要使用area? 在大型的ASP.NET mvc5项目中一般都有许多个功能模块,这些功能模块可以用Area(中文翻译为区域)把它们分离开来 ...

  5. 29.Combination Sum(和为sum的组合)

    Level:   Medium 题目描述: Given a set of candidate numbers (candidates) (without duplicates) and a targe ...

  6. How to mount a remote directory in Linux using sshfs

    Q. I have access rights to one of the remote server through SSH protocol and there is no File share ...

  7. 快速启动工具Rulers 3.6

    云盘下载:https://yunpan.cn/cq7mumZ5uzzgw (提取码:b16a) 能根据已经安装的所有软件的名称快速查询到并回车迅速打开1.Alt+空格无特效或者Alt键有特效控制显示和 ...

  8. 基于DALN方案C/S架构运用

    今天闲来无事,看到笔记本的蓝牙设备想着:可不可以实现电脑端播放手机端的音频. 刚刚开始想着基于蓝牙,尝试多次无解(主要原因是没有找到支持此功能的软件) 最后:有朋友建议可以研究下DALN方案解决这个需 ...

  9. excel的公式:查找匹配某个值的单元格--MATCH()

    这个非常简单,没啥说的,D1位置是显示这个值所在的行数,如果是跨表,就在匹配区域前面加上  sheetName!

  10. Azure Powershell获取Azure虚拟机的操作系统型号及具体版本

    Azure ARM 模式虚拟机: 1.登陆Azure账号 Add-AzureRmAccount -EnvironmentName AzurechinaCloud 2.选择指定订阅 Select-Azu ...