如何检查字符串中是否出现某个名称?

3

我有一个包含多个名字的变量,每个名字之间由空格分隔,如下所示:

blacklist = "name1 name2 name3 etc"

我想要做的是检查这个列表中是否存在某个指定的名称。例如:

if nameInBlacklist("player_name") == true then
        dosomething()
end
2个回答

1
如果你有一个很长的黑名单,你可以将它转换为以列表条目为键的表格。一个短的黑名单可以通过字符串匹配轻松检查:
if (" "..blacklist.." "):find( " "..player_name.." ", 1, true ) then
    doSomething()
end

find函数的最后一个参数开启了对普通字符串的匹配查找


1
假设你想要查找的名字在字符串name中,你可以使用:
if (" " .. blacklist .. " "):find(" " .. name .. " ", 1, true) then
  -- do something
end

请注意,第四个参数true是为了关闭模式匹配功能,这样name中包含一些需要转义的特殊字符也是可以的。
如果您需要使用一个函数:
function nameInBlacklist(name)
  return (" " .. blacklist .. " "):find(" " .. name .. " ", 1, true)
end

不要将返回值与true进行比较,直接将其作为条件使用即可。
if nameInBlacklist("player_name") then
  --do something
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接