lua mysql 字符串截取_Lua字符串库(string库)学习笔记

Lua 最强大的特性之一就是它的字符串处理能力,它支持字符格式化输出,具有可扩展的模式匹配查找功能,以及一些实用的字符操作,例如查询、截取、替换和删除等字符串操作,这些字符串操作函数都封装在一个名为 string 的模块里。

Lua 里的字符索引是从 1 开始,索引值也可以是负数,这种情况将被解释成向后索引,从字符串末尾开始算起。

下面是 Lua 5.2 提供的字符串操作函数:

byte

函数 string.byte 把字符串里的第 i 个字符转为 ASCII编码,默认是输出第一个字符的编码(只有一个参数的话),用法:

string.byte (s [, i [, j]])

例子:

print(string.byte("abc")) //echo:97

print(string.byte("abc", 2))//echo:98

char

函数 string.char是把一个 ASCII 编码转换为对应的字符,用法:

string.char (asc1, ...)

例子:

print(string.char(97)) //echo a

print(string.char(99, 100, 101)) //echo cde

dump

函数 string.dump返回一个函数二进制形式的字符串,用法:

string.dump (function)

参数 function 是一个 Lua 函数:

function test()

print("just a test")

end

print(string.dump(test))

函数 string.dump实现了函数的序列化,函数可以很轻松的传递,并在其他作用域调用。函数 string.dump 出来的二进制字符串,可以用 load 函数反序列回来直接调用。

function test()

print("just a test")

end

local sd = string.dump(test)

print(sd)

local ls = load(sd)

print(ls)

ls()

find

函数 string.find 查找字符串 s 里第一个符合查找字符 pattern 的位置,用法:

string.find (s, pattern [, init [, plain]])

如果找到了目标字符 pattern,则返回它的开始和结束位置:

start, end = string.find("just a test", "st")

print(start, end)

如果没有找到,则返回 nil:

print(string.find("just a test", "dhq.me"))

format

函数 string.format用于把字符串格式化输出,用法:

string.format (formatstring, ···)

string.format 函数的第一个参数是用来指定字符串的格式,例如:

print(string.format("%s is %d", "ten", 10))

上面例子里的 %s 表示字符串,%d 表示数字,它们是 Lua 的格式化输出符号。

string.format 函数的用法跟 C 语言里的 printf 函数类似,例如它可以像 printf 那样输出指定位数的数字:

Pi = 3.1415926

print(string.format("Pi is %.2f", Pi))

Lua 的字符格式化输出符号列表:

.           所有字符

%a          字母

%c          控制符

%d          数字

%D          非数字

%l          小写字母

%p          标点符号

%s          字符串

%u          大写字母

%w          字母数字

%x          十六进制数

%z          用 0 表示的字符

gmatch

函数 string.gmatch会返回一个迭代函数,尅通过该函数遍历到一个字符串 s 中所有出现指定匹配模式 pattern 的地方,用法:

string.gmatch (s, pattern)

例如下面是找出字符串 s 里的所有单词:

s = "just a test"

for w in string.gmatch(s, "%a+") do

print(w)

end

gsub

函数 string.gsub 用于全局字符串替换,字符串 s 里满足匹配模式 pattern 格式的字符都会被替换成 repl 参数的值,用法:

string.gsub (s, pattern, repl [, n])

例如:

print(string.gsub("just a test", "st", "*"))

匹配模式 pattern 可以是一个正则:

s = "num is 1234567890"

print(string.gsub(s, "%d", "*"))

可在函数的最后加上一个可选参数 n,表示指定要替换的次数:

s = "sethook, setlocal, setmetatable, setupvalue, setuservalue"

print(string.gsub(s, "s%a+", "S", 2))

len

函数 string.len 用于返回字符串 s 的长度,用法:

string.len (s)

例子:

print(string.len("abcdefg"))

lower

函数 string.lower用于把字符串 s 里的字母转为小写,用法:

string.lower (s)

例如:

print(string.lower("AbCdEfG"))

match

函数 string.match用于查找字符串 s 里第一个匹配对模式 pattern 的值,并返回匹配值,用法:

string.match (s, pattern [, init])

上面参数 init 是可选, 表示查找过程的起点, 默认从 1 开始:

print(string.match("just a test", "test"))

参数 patter 可以是一个正则模式:

t = "today is 2003-5-31"

print(string.match(t, "%d+-%d+-%d+"))

如果 pattern 为空,则返回整个字符串;如果没匹配成功,则返回 nil。

print(string.match("abcdabcd", "a"))

rep

函数 string.rep返回一个由分隔符 sep 隔开的重复(repeat)n 次字符 s 的字符串,用法:

string.rep (s, n [, sep])

默认的分隔符 sep 是空字符。

print(string.rep("repeat", 3))

reverse

函数 string.reverse用于倒转一个字符串 s 的排序,用法:

string.reverse (s)

例如:

print(string.reverse("reverse"))

sub

函数 string.sub用于从字符串 s 里截取一个从第 i 个字符到第 j 个字符间的子字符串,用法:

string.sub (s, i [, j])

例如:

print(string.sub("abcdefg", 2, 5))

参数 i 可以是负数,这种情况下,子串的位置从字符串 s 的最后开始算起:

print(string.sub("abcdefg", -4, -2))

参数 end 省略的话,则会返回从 i 到字符串末尾的子字符串:

print(string.sub("abcdefg", 3))

upper

函数 string.upper 用于把字符串 s 里的字母转为大写,用法:

string.upper (s)

例如:

print(string.upper("AbCdEfG"))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 本套课程分为基础与中级两部分,分别就lua语言的各方面知识点进行探讨,学习完本套课程,对于后续Xlua(Tolua等框架)技术的学习提供强大的语言技术保证。       本套lua课程采用入门与商业级两种开发IDE进行教学:入门级的SciTE内置IDE与商业级的IDEA lua插件。本套课程学习完毕,对于除了传统手游外,在VR、AR、商业级大型应用程序、嵌入式设备开发等领域都有较强的指导作用。           《lua中级篇》分为:“函数的进阶”、“字符串进阶”、“Table进阶”、“元表”、“OOP面向对象”、“协同程序”、“IO操作”、“调试与运行”等八个大的章节,详细深入讲解lua开发的方方面面。        内容包含lua可变参数、闭包、模块、函数尾调用、字符串模式匹配、字符串不变性原理、矩阵、链表、元表详解与应用、协同的生命周期与生产消费者问题、lua文件各种读写操作、lua执行外部代码与错误异常处理垃圾收集机制等。       最后,lua中级篇的学习,对于广大学员开发商业级lua热更新技术,具有不可替代的重要作用! 热更新系列(技术含量:中高级):B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值