打印

今天群里有人问Lua的字符串操作相关的函数

[复制链接]
550|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaoyang9992006|  楼主 | 2019-1-25 13:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如他收到一段内容,想要提取里面的某个位置的数字,但是这个位置不固定,数字长度也不固定,比如是2位也可能是三位。
但是前面的标题是固定的,我们就可以使用字符串操作的函数对目标内容定位。
如何确定这个数字的长度呢,可以再从定位的开头查找结尾的位置。这样我们就可以知道开头的位置和结尾的位置在哪儿了。

相关帖子

沙发
gaoyang9992006|  楼主 | 2019-1-25 13:17 | 只看该作者
string.find (str, substr, [init, [end]])
在一个指定的目标字符串中搜索指定的内容(第三个参数为索引),返回其具体位置。不存在则返回 nil。
> string.find("Hello Lua user", "Lua", 1)
7    9







使用特权

评论回复
板凳
gaoyang9992006|  楼主 | 2019-1-25 13:17 | 只看该作者
        string.gmatch(str, pattern)
回一个迭代器函数,每一次调用这个函数,返回一个在字符串 str 找到的下一个符合 pattern 描述的子串。如果参数 pattern 描述的字符串没有找到,迭代函数返回nil。
> for word in string.gmatch("Hello Lua user", "%a+") do print(word) end
Hello
Lua
user

使用特权

评论回复
地板
gaoyang9992006|  楼主 | 2019-1-25 13:17 | 只看该作者
string.match(str, pattern, init)
string.match()只寻找源字串str中的第一个配对. 参数init可选, 指定搜寻过程的起点, 默认为1。
在成功配对时, 函数将返回配对表达式中的所有捕获结果; 如果没有设置捕获标记, 则返回整个配对字符串. 当没有成功的配对时, 返回nil。
> = string.match("I have 2 questions for you.", "%d+ %a+")
2 questions

> = string.format("%d, %q", string.match("I have 2 questions for you.", "(%d+) (%a+)"))
2, "questions"

使用特权

评论回复
5
gaoyang9992006|  楼主 | 2019-1-25 13:18 | 只看该作者
这个方法有点跟Excel里面的查找函数类似。
比如你想从一列的字符串提取内容,就可以通过Excel的查找函数对你的目标内容定位,然后可以指定长度,你不确定长度的可以查找首尾位置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:西安公路研究院南京院
简介:主要工作从事监控网络与通信网络设计,以及从事基于嵌入式的通信与控制设备研发。擅长单片机嵌入式系统物联网设备开发,音频功放电路开发。

1971

主题

15978

帖子

210

粉丝