十四、Lua字符串库中的几个重要函数
来源:互联网 发布:linux运维工程师薪资 编辑:程序博客网 时间:2024/06/05 14:59
Lua字符串库中的几个重要函数|果冻想
本文是对于“果冻想”的《Lua入门系列》所作笔记,原文来自上面链接。
find
string.find()函数用于在一个给定的目标字符串中搜索一个模式。
local str = "Hello World"
local i, j = string.find(str, "Hello")-- 返回Hello在str中的起始位置和终止位置
print(i, j)-- 1 5
local k, v = string.find(str, "haha") -- 没有找到匹配,返回nil
print(k, v)-- nil nil
第二个参数可以传递一个正则表达式,也就是一个pattern,进行正则匹配。
local str = "Hello123456World"
local i, j = string.find(str, "%d+")
print(i, j)-- 6 11
match
string.match与string.find相似,但是string.match返回的是所匹配的字符串。
local str = "Hello12345World"
local subStr = string.match(str, "%d+")
print(subStr)
local i, j =string.find(str, "%d+")
subStr =string.sub(str, i, j)
print(subStr)
-- 是不是可以认为match等于find + sub呢?
gsub
string.gsub有三个参数:目标字符串、模式和替换字符串。
local str = "Hello World"
local strResult = string.gsub(str, "Hello", "Jelly")
print(strResult) -- Jelly World
string.gsub有可选的第四个参数,可以限制替换的次数。
local str = "Hello World"
-- 这里不限制替换次数
local strResult, cnt = string.gsub(str, "l", "o")
print(strResult) -- Heooo Worod
print(cnt) -- 实际替换的次数
-- 开始限制替换次数
strResult, cnt = string.gsub(str, "l", "o", 1)
print(strResult) -- Heolo World
print(cnt) -- 就替换了一次
更强大的地方是,它的第三个参数可以是table或函数:
参数是table
local replaceTb = {hello = "Jelly", world = "Think"}
local str = "hello world"
-- 注意,第3个参数是一个table
local strResult = string.gsub(str, "hello", replaceTb)
print(strResult) -- Jelly world
strResult = string.gsub(strResult, "world", replaceTb)
print(strResult) -- Jelly Think
strResult = string.gsub(strResult, "hello", replaceTb)
print(strResult) -- Jelly Think
参数是function
local replaceFunc = function (str)
return str .. "JellyThink"
end
local str = "hello world"
-- 注意,第3个参数是一个Func
local strResult = string.gsub(str, "hello", replaceFunc)
print(strResult) -- helloJellyThink world
gmatch
gmatch会返回一个迭代器函数,你可以使用这个迭代器函数区迭代匹配的所有内容。
local str = "Hello World"
local iteratorFunc = string.gmatch(str, "%a+") -- %a+表示匹配所有单词
for i in iteratorFunc do
print(i)
end
自己实现一个gmatch:
local str = "Hello World"
-- 使用find来实现一个自己的gmatch
local myGmatch = function (s, pattern)
local resultTb = {} -- 相当于迭代器中的恒定状态
local index = 0 -- 相当于迭代器中的控制变量
local i, j = string.find(s, pattern)
while i do
resultTb[#resultTb + 1] = string.sub(s, i, j)
i, j = string.find(s, pattern, j + 1)
end
return function () -- 返回一个迭代器函数
index = index + 1
return resultTb[index]
end
end
for i in myGmatch(str, "%a+") do
print(i)
end
0 0
- 十四、Lua字符串库中的几个重要函数
- pandas中的几个重要函数
- SQLServer中的几个重要时间函数
- Lua标准库中部分重要函数
- lua table 重要函数
- lua重要函数
- 几个重要的函数
- 几个重要的函数
- 几个重要的函数:
- 几个重要的函数
- java几个重要函数
- python 几个重要函数
- 重写c语言中的几个字符串函数
- 几个重要函数的用法
- hashmap的几个重要函数
- AOP中的几个重要概念
- 计算机网络中的几个重要概念
- 数论中的几个重要定理
- 又见神奇的异或。Trie树。今日头条。
- 这个应该是目前最全的Tracking相关的文章了
- UVA 12169
- Caffe 源码阅读笔记 [基本模块] Syncedmem & Blob
- 获取linux下,tcp、udp的系统默认缓存大小和最大值
- 十四、Lua字符串库中的几个重要函数
- 反射获取HashMap内部table字段及其node链表,打印全部数据
- Nginx 与 FPM 的工作机制
- 文章标题 HDU 5113 : Black And White (dfs+剪枝)
- windows禅道环境搭建
- Linux常用的操作指令
- 【LeetCode】210. Course Schedule II (Medium)
- NOJ 题目216:A problem is easy
- Linux中Less命令