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

これは、テーブルを反復処理すると、テーブルbadwordsの最初の文字列が"f..."一致せずa..、ブロックにがreturn false含まれるためです。コードの実行を終了します。

elseそこにブロックは必要ありません。ループのreturn false外側に出てください。for

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 に答える