基本函数

函数 描述 示例 结果
len 计算字符串长度 string.len(“abcd”) 4
rep 返回字符串s的n个拷贝 string.rep(“abcd”,2) abcdabcd
lower 返回字符串全部字母大写 string.lower(“AbcD”) abcd
upper 返回字符串全部字母小写 string.upper(“AbcD”) ABCD
format 返回一个类似printf的格式化字符串 string.format(“the value is:%d”,4) the value is:4
sub returns substring from index i to j of s string.sub(“abcd”,2) bcd
string.sub(“abcd”,-2) cd
string.sub(“abcd”,2,-2) bc
string.sub(“abcd”,2,3) bc
find 在字符串中查找 string.find(“cdcdcdcd”,”ab”) nil
string.find(“cdcdcdcd”,”cd”) 1    2
string.find(“cdcdcdcd”,”cd”,7) 7    8
gsub 在字符串中替换 string.gsub(“abcdabcd”,”a”,”z”); zbcdzbcd    2
string.gsub(“aaaa”,”a”,”z”,3); zzza    3
byte 返回字符的整数形式 string.byte(“ABCD”,4) 68
char
match
gmatch
将整型数字转成字符并连接
匹配出单条结果
匹配出多条结果
string.char(97,98,99,100)
string.match("a=svv12","=(%w+)")
string.gmatch( html1,"<img src='(.-)' />" );
abcd
svv12
匹配出所有img地址

基本模式串

字符类 描述 示例 结果
. 任意字符 string.find(“”,”.”) nil
%s 空白符 string.find(“ab  cd”,”%s%s”) 3    4
%S 非空白符 string.find(“ab  cd”,”%S%S”) 1    2
%p 标点字符 string.find(“ab,.cd”,”%p%p”) 3    4
%P 非标点字符 string.find(“ab,.cd”,”%P%P”) 1    2
%c 控制字符 string.find(“abcd\t\n”,”%c%c”) 5    6
%C 非控制字符 string.find(“\t\nabcd”,”%C%C”) 3    4
%d 数字 string.find(“abcd12″,”%d%d”) 5    6
%D 非数字 string.find(“12abcd”,”%D%D”) 3    4
%x 十六进制数字 string.find(“efgh”,”%x%x”) 1    2
%X 非十六进制数字 string.find(“efgh”,”%X%X”) 3    4
%a 字母 string.find(“AB12″,”%a%a”) 1    2
%A 非字母 string.find(“AB12″,”%A%A”) 3    4
%l 小写字母 string.find(“ABab”,”%l%l”) 3    4
%L 大写字母 string.find(“ABab”,”%L%L”) 1    2
%u 大写字母 string.find(“ABab”,”%u%u”) 1    2
%U 非大写字母 string.find(“ABab”,”%U%U”) 3    4
%w 字母和数字 string.find(“a1()”,”%w%w”) 1    2
%W 非字母非数字 string.find(“a1()”,”%W%W”) 3    4

用[]创建字符集,”-”为连字符,”^”表示字符集的补集

字符类 描述 示例 结果
% 转义字符 string.find(“abc%..”,”%%”) 4    4
string.find(“abc..d”,”%.%.”) 4    5

转义字符%

字符类 描述 示例 结果
[01] 匹配二进制数 string.find(“32123″,”[01]“) 3    3
[AB][CD] 匹配AC、AD、BC、BD string.find(“ABCDEF”,”[AB][CD]“) 2    3
[[]] 匹配一对方括号[] string.find(“ABC[]D”,”[[]]”) 4    5
[1-3] 匹配数字1-3 string.find(“312″,”[1-3][1-3][1-3]“) 1    3
[b-d] 匹配字母b-d string.find(“dbc”,”[b-d][b-d][b-d]“) 1    3
[^%s] 匹配任意非空字符 string.find(“  a  ”,”[^%s]“) 3    3
[^%d] 匹配任意非数字字符 string.find(“123a”,”[^%d]“) 4    4
[^%a] 匹配任意非字母字符 string.find(“abc1″,”[^%a]“) 4    4

用”()”进行捕获

字符类 描述 示例 结果
() 捕获字符串 string.find(“12ab”,”(%a%a)”) 3    4    ab
string.find(“ab12″,”(%d%d)”) 3    4    12

模式修饰符

修饰符 描述 示例 结果
+ 表示1个或多个,匹配最多个 string.find(“aaabbb”,”(a+b)”) 1    4    aaab
string.find(“cccbbb”,”(a+b)”) nil
- 表示0个或多个,匹配最少个 string.find(“zzxyyy”,”(xy-)”) 3    3    x
string.find(“zzzyyy”,”(x-y)”) 4    4    y
* 表示0个或多个,匹配最多个 string.find(“mmmnnn”,”(m*n)”) 1    4    mmmb
string.find(“lllnnn”,”(m*n)”) 4    4    n
? 表示0个或1个 string.find(“aaabbb”,”(a?b)”) 3    4    ab
string.find(“cccbbb”,”(a?b)”) 4    4    b

Lua的string库函数列表的更多相关文章

  1. Lua的string库函数、lua中string的模式匹配

    --****************Lua的string库函数****************** --1.string.byte --string.byte (s [, i [, j]]) --取出 ...

  2. Lua的string和string库总结

    Lua有7种数据类型,分别是nil.boolean.number.string.table.function.userdata.这里我总结一下Lua的string类型和string库,复习一下,以便加 ...

  3. 在lua的string库和正则表达式

    一.前提要了解一下lua 的string几个方法 1. string库中所有的字符索引从前往后是1,2,...;从后往前是-1,-2,... 2. string库中所有的function都不会直接操作 ...

  4. lua的string库与强大的模式匹配

    lua原生解释器对字符串的处理能力是十分有限的,强大的字符串操作能力来自于string库.lua的string函数导出在string module中.在lua5.1,同一时候也作为string类型的成 ...

  5. Android错误:can not get file data of lua/start_v2.op [LUA ERROR] [string "require "lua/start_v2””] 已解决

    错误: can not get file data of lua/start_v2.op [LUA ERROR] [string "require "lua/start_v2””] ...

  6. lua中string.find()函数作用于汉字字符串

    lua中有这样一个库函数,string,find(),作用是在一个字符串中找到目标字符串的起始和结束位置(从1开始计数) 如:a,b=string.find("hello world&quo ...

  7. (转)Lua的table库函数insert、remove、concat、sort详细介绍

    原帖链接:http://www.jb51.net/article/64711.htm#comments 有增注标识的地方为额外注释,非原帖内容. 函数列表:(增注:只能用于数组!) table.ins ...

  8. Lua 中string.gsub(sourceString, pattern, replacementString) 返回值有两个

    这阵子在学习lua,今天看到string操作,书中描述string.gsub(sourceString, pattern, replacementString)返回一个字符串,但是我在实际操作中却发现 ...

  9. lua的string.gsub初使用

    今天在学习lua,熟悉项目代码的过程中,发现string.gsub好高级,所以在此mark下. 以下是lua5.1的官方文档介绍. string.gsub (s, pattern, repl [, n ...

随机推荐

  1. Java后端部署以及与Android通信注意事项

    1 概述 本文列举了一些Android+后端Java通信/部署时的问题以及注意事项,覆盖的问题包括但不限于安全组.数据库.路径等,如果各位读者的Android端不能正常访问Java后端,希望这里的解决 ...

  2. Go-24-异常处理机制

    error 接口 type error interface(){ Error() string } 在Go语言中处理错误的方式通常是将返回的错误与nil进行比较.nil值表示没有发生错误,而非nil值 ...

  3. 9. resultMap 结果映射集

    @Data public class CreditCard extends BankCard { /** * 消费额度 */ private String creditLine; } @Data pu ...

  4. 前后端分离中的无痛刷新token机制

    今天我们来说一说前后端分离中的无痛刷新token机制 博主先来分享一波福利,最近挖到的宝藏,刚开始学Java的同学看 https://www.bilibili.com/video/BV1Rx41187 ...

  5. sklearn.metrics【指标】

    [分类指标] 1.accuracy_score(y_true,y_pre) : 精度 2.auc(x, y, reorder=False) : ROC曲线下的面积;较大的AUC代表了较好的perfor ...

  6. SpringBoot的旅游项目——day01(学习记录附赠源码)

    前言 学完SpringBoot的项目,Github地址,欢迎start,一起学习! 第一天 一.技术选型 基于SpringBoot+VUE的前后端分离的仿照马蜂窝的项目. 后端选用的技术为: Spri ...

  7. C++介绍和class的介绍

    课程介绍 程序设计II是程序设计I的延续,继续提高编程能力,并能掌握面向对象(Object Oriented Programming)的程序设计方法.所谓面向对象,指的是将具体的流程变得模块化.这可以 ...

  8. 473. Matchsticks to Square

    Remember the story of Little Match Girl? By now, you know exactly what matchsticks the little match ...

  9. Standalone模式下,通过Systemd管理Flink1.11.1的启停及异常退出

    Flink以Standalone模式运行时,可能会发生jobmanager(以下简称jm)或taskmanager(以下简称tm)异常退出的情况,我们可以使用Linux自带的Systemd方式管理jm ...

  10. SpringBoot自动装配源码

    前几天,面试的时候被问到了SpringBoot的自动装配的原理.趁着五一的假期,就来整理一下这个流程. 我这里使用的是idea创建的最简单的SpringBoot项目. 我们都知道,main方法是jav ...