【发布时间】:2022-01-10 16:20:30
【问题描述】:
我现在一直在尝试查看用户输入的任何内容是否包含特定单词,例如(“谢谢”、“谢谢”、“谢谢”)等
我不知道如何才能找到用户输入是否包含特定的字符串单词,我也不太擅长 lua 编码,eep eep!
【问题讨论】:
标签: lua
我现在一直在尝试查看用户输入的任何内容是否包含特定单词,例如(“谢谢”、“谢谢”、“谢谢”)等
我不知道如何才能找到用户输入是否包含特定的字符串单词,我也不太擅长 lua 编码,eep eep!
【问题讨论】:
标签: lua
也许这很有帮助,因为它可以在一次运行中匹配多次并返回匹配的频率。
所以决定模式([tT]han%g+)匹配的出现次数是可能的。
用于此的魔术字符串函数是:gsub()
在 Lua Konsole 中键入的示例...
> _VERSION
Lua 5.4
texts = setmetatable({}, {__call = function(self) if #self > 0 then return self[#self]:gsub('([tT]han%g+)','*%1*') end end, __index = {insert = table.insert}})
> texts:insert([[Hello ...
My name is Thomas T. Thank
I would like to thank you...
Thanks in advance]])
> texts()
Hello ...
My name is Thomas T. *Thank*
I would like to *thank* you...
*Thanks* in advance 3
> do local txt, occ = texts() if occ > 0 then io.write(occ,' occurencies in...\n', txt, '\n...found.\n') end end
3 occurencies in...
Hello ...
My name is Thomas T. *Thank*
I would like to *thank* you...
*Thanks* in advance
...found.
...gsub() 也是一个很好的翻译或查找和替换功能。
【讨论】:
Lua 参考手册来救援!
https://www.lua.org/manual/5.4/manual.html#pdf-string.find
string.find (s, pattern [, init [, plain]]) 在字符串 s 中查找 pattern 的第一个匹配项(参见 §6.4.1)。如果找到匹配项, 然后 find 返回此事件开始的 s 的索引,并且 结束;否则,它返回失败。第三个可选的数字参数 init 指定从哪里开始搜索;它的默认值为 1 和 可以是负数。作为第四个可选参数的 true 值 关闭模式匹配工具,因此该函数执行 普通的“查找子字符串”操作,模式中没有字符 被认为是魔法。
如果模式有捕获,则在成功匹配中捕获 在两个索引之后也会返回值。
或
https://www.lua.org/manual/5.4/manual.html#pdf-string.match
string.match(s, pattern [, init]) 在字符串 s 中查找模式的第一个匹配项(参见 §6.4.1)。如果找到一个,则匹配 从模式返回捕获;否则返回失败。如果 模式指定不捕获,然后返回整个匹配。一种 第三,可选的数字参数 init 指定从哪里开始 搜索;它的默认值为 1,可以为负数。
例子:
local input = "love is in the air"
print(input:find("air"))
print(input:match("air"))
input:find("air") 基本上是 input:match("()ai()r") 的缩写
编辑: 如果您不知道如何获取用户输入:
【讨论】:
air 作为示例。 Lua 中的任何文本都以字符串形式出现。您的客户的意见也是如此。因此在用户输入中查找某些内容是以完全相同的方式完成的。如果您不知道如何获取用户输入,那么您可能应该在帖子中提到这一点。