lua中 string.find()方法得不到正确的结果是怎么回事

a,b=string.find("GL31-LWG-LJG-1-BQG-DWG","-1-BQG");print(a,b);运行后结果为:1518为什么不是:1318呢还... a,b=string.find("GL31-LWG-LJG-1-BQG-DWG","-1-BQG");
print(a,b);
运行后结果为: 15 18
为什么不是:13 18呢

还有就是:
a,b=string.find("GL31-LWG-LJG-4-BQG-DWG","-4-");
print(a,b);
这段代码运行后结果为: 5 5
为什么不是: 13 15 呢

难道lua中 string.find()方法使用时 — 和 数字 和 字母不一样吗?
哪位高手给解释一下
更多0
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
czfshine
2014-09-27 · TA获得超过190个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:131万
展开全部

那个,在lua中,使用模式匹配时,符号前要加%。

就像这样:


“%d+”  是匹配第一个数字

例如:12345678,5201314

“%d%+” 是匹配一个数字后加一个加号

例如:1+  5+  4+ 



你的那个

a,b=string.find("GL31-LWG-LJG-1-BQG-DWG","-1-BQG");

里有- 号,所以lua的解析会出错

改成

a,b=string.find("GL31-LWG-LJG-1-BQG-DWG","%-1%-BQG");

print(a,b);


就是输出 13 18  了。


具体的去看《lua 程序设计》这部书。

本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0f59f83
2020-08-18
知道答主
回答量:1
采纳率:0%
帮助的人:584
展开全部
主要问题是三个字:没转义。具体内容可以看楼上那个老哥。
知识点提醒:匹配模式下转义用%,非匹配模式用\;在不确定一个符号是否需要转义的时候可以把所有字符都转义掉,这样总不会错,因为就算是不用转义的你加个转义结果也是一样的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式