2

嗨,如果没有 lua 代码,我无法解释它,问题是如果我写 te = "f ... you" 它只会捕获表的第一项,它将返回 true,但如果我写过,te = "a .." 它会返回 false -_-

我只是想从字符串中找出不好的词,这里是代码 * 抱歉我没有完全写出不好的词

local te = "f... you"
badwords = {
"f...",
"a..",
"s...",
"b....",
"g..",
"w....",
}

和功能:

function isTextContainsBadwords(str)
  for i,v in ipairs(badwords) do
    if str:find(v) then
      return true
    else
      return false
    end
  end
end
print(tostring(isTextContainsBadwords(te)))
4

1 回答 1

1

这是因为当您迭代 table 时badwords,其中的第一个字符串"f..."不匹配a..,并且 else 块中有 a return false;终止代码的执行。

你不需要else那里的块。只需return falsefor循环之外。

function isTextContainsBadwords(str)
    for i,v in ipairs(badwords) do
        if str:find(v) then
            return true
        end
    end
    return false
end
于 2013-03-25T01:48:26.273 回答