我正在尝试进行简单的字符串操作:获取文件的名称,而不使用扩展名。只是,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
这是一个错误,还是我做错了什么?
答案 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"