3

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

blacklist = "name1 name2 name3 etc"

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

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

2 回答 2

1

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

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

find 的最后一个参数为find开启纯字符串匹配。

于 2013-12-29T11:58:30.507 回答
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
于 2013-12-29T12:01:05.910 回答