string - 使用 string.find() 查找 '.'

标签 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

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

最佳答案

string.find() ,默认情况下,不查找​​字符串中的字符串,而是查找 patterns在字符串中。可以在链接中找到更完整的信息,但这里是相关部分;

The '.' represents a wildcard character, which can represent any character.



实际找到字符串 . ,句号需要用百分号转义,%.
编辑:或者,您可以传入一些额外的参数,find(pattern, init, plain)它允许您传入 true作为最后一个参数并搜索纯字符串。那会让你的陈述;
> i, j = string.find(s, '.', 1, true)   -- plain search starting at character 1
> print(i, j) 
6 6

关于string - 使用 string.find() 查找 '.',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15258313/

相关文章:

java - 为什么 java.lang.String 是大写的?

scope - Lua - 函数中的局部变量作用域

windows - lua的字符串模式匹配为什么要这样做呢?

regex - 数字和正则表达式

java - 如何在Java中为字符串变量创建if语句?

Java 字符串比较/引用

lua - 有什么好的使用Lua的游戏引擎?

string - 当我们在 Lua 中没有 `|` 运算符时如何验证这个字符串?

python - 空字符串 boolean 逻辑

c - lua_Integer 和 lua_createtable(表大小限制)