如何检查字符串中是否存在名称?

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

blacklist = "name1 name2 name3 etc"

我想检查这个列表中是否存在某个特定的名称,例如:

if nameInBlacklist("player_name") == true then
        dosomething()
end
点赞
用户280314
用户280314

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

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

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

2013-12-29 11:58:30
用户1009479
用户1009479

假设你要查找的名称在字符串 name 中,你可以使用:

if (" " .. blacklist .. " "):find(" " .. name .. " ", 1, true) then
  -- 执行某些操作
end

请注意,第四个参数 true 是关闭模式匹配功能的,这样 name 就可以包含一些需要转义的特殊字符。

如果你需要使用一个函数:

function nameInBlacklist(name)
  return (" " .. blacklist .. " "):find(" " .. name .. " ", 1, true)
end

不要将返回值与 true 进行比较,直接将其作为条件使用:

if nameInBlacklist("player_name") then
  -- 执行某些操作
end
2013-12-29 12:01:05