找到'。'与string.find()

时间:2013-03-06 21:21:22

标签: string lua lua-patterns

我正在尝试进行简单的字符串操作:获取文件的名称,而不使用扩展名。只是,string.find()似乎有点问题:

s = 'crate.png'
i, j = string.find(s, '.')
print(i, j) --> 1 1

只有点:

s = 'crate.png'
i, j = string.find(s, 'p')
print(i, j) --> 7 7

这是一个错误,还是我做错了什么?

3 个答案:

答案 0 :(得分:15)

默认情况下,

string.find()在字符串中找不到字符串,在字符串中找到patterns。可以在链接中找到更完整的信息,但这是相关部分;

  

'。'表示一个通配符,可以表示任何字符

要实际找到字符串.,需要使用百分号%.

转义句点

编辑:或者,您可以传入一些额外的参数find(pattern, init, plain),它允许您传入true作为最后一个参数并搜索纯字符串。那将是你的陈述;

> i, j = string.find(s, '.', 1, true)   -- plain search starting at character 1
> print(i, j) 
6 6

答案 1 :(得分:7)

执行string.find(s, '%.')string.find(s, '.', 1, true)

答案 2 :(得分:4)

其他答案已经解释了什么是错的。为了完整起见,如果您只对文件的基本名称感兴趣,可以使用string.match。例如:

string.match("crate.png", "(%w+)%.")  --> "crate"