如何检查字符串中名称的出现?

时间:2013-12-29 11:52:02

标签: string lua lua-patterns

我在一个变量中有一个由空格分隔的名称列表,如下所示:

blacklist = "name1 name2 name3 etc"

我想要的是检查此列表中某些指定名称的存在。像

if nameInBlacklist("player_name") == true then
        dosomething()
end

2 个答案:

答案 0 :(得分:1)

如果您有一个很长的黑名单,您可以将其转换为由列表条目键入的表。可以通过字符串匹配轻松检查短黑名单:

if (" "..blacklist.." "):find( " "..player_name.." ", 1, true ) then
    doSomething()
end

要查找的最后一个参数会打开find的纯字符串匹配。

答案 1 :(得分: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