搜索
查看: 2703|回复: 5

新手 string.match的问题

[复制链接]

1

主题

3

帖子

19

积分

新手入门

Rank: 1

积分
19
发表于 2014-10-18 21:37:41 | 显示全部楼层 |阅读模式
我写了一个小程序用来过滤文件。文件名称都是 01.lrc 02.lrc…………100.lrc这样的。现在用string.match(sentence,"\d+")将文件名中的数字提取出来。碰到一个奇怪的问题。当遇到文件名称是08.lrc 以及09.lrc时返回值都是0,其他的都能正常返回1,2,3等等。不知道怎么回事。哪位大侠指点一下。


  1. import console;
  2. //var num = console.getNumber( "请输入数值:" )
  3. sentence="07.lrc"
  4. sentence=tonumber(string.match(sentence,"\d+"))

  5. console.log("您输入的是" ,sentence );
  6. console.pause(true);
复制代码
回复

使用道具 举报

12

主题

309

帖子

1799

积分

荣誉会员

Rank: 8Rank: 8

积分
1799
发表于 2014-10-20 09:24:09 | 显示全部楼层

08 是不存在的,看一下语法手册的基本语法,0开头的是8进制。 改成 tonumber('08',10) 强制用10进制转换。 写代码的时候不要太捉急,

08 是不存在的,看一下语法手册的基本语法,0开头的是8进制。
改成 tonumber('08',10) 强制用10进制转换。

写代码的时候不要太捉急,看一下跳出来的函数用法提示。
tonumber.jpg
回复

使用道具 举报

12

主题

678

帖子

4003

积分

荣誉会员

子非魚、安知魚之樂

Rank: 8Rank: 8

积分
4003
发表于 2014-10-20 10:36:21 | 显示全部楼层

如果文件名全部是数字 而你仅想提取文件名 可以使用 io.splitpath [code][lang=aardio,false]import cons

如果文件名全部是数字  而你仅想提取文件名
可以使用 io.splitpath

  1. import console;

  2. var file = io.splitpath("08.lrc")

  3. console.log("文件名为" ,file.name );
  4. console.pause(true);
复制代码
回复

使用道具 举报

0

主题

9

帖子

65

积分

一级会员

Rank: 2

积分
65
发表于 2014-10-20 11:09:20 | 显示全部楼层

标记一下,以备后查。

标记一下,以备后查。
回复

使用道具 举报

0

主题

9

帖子

128

积分

一级会员

Rank: 2

积分
128
发表于 2014-10-21 08:45:49 | 显示全部楼层

如果楼主只是想把左边的0去掉,可以直接把tonumber换成string.trimleft,也就是 sentence=tonumber(string.matc

如果楼主只是想把左边的0去掉,可以直接把tonumber换成string.trimleft,也就是
sentence=tonumber(string.match(sentence,"\d+")) 换成
sentence=string.trimleft(string.match(sentence,"\d+"),0)
回复

使用道具 举报

1

主题

3

帖子

19

积分

新手入门

Rank: 1

积分
19
 楼主| 发表于 2014-10-21 23:58:28 | 显示全部楼层

谢谢各位的回答,我再仔细看下帮助

谢谢各位的回答,我再仔细看下帮助
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2019-7-23 02:37 , Processed in 0.093750 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表