cocos2d-lua敏感词过滤函数

前端之家收集整理的这篇文章主要介绍了cocos2d-lua敏感词过滤函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
function cc.splitStringToWords(str)
    local words = {}
    for uchar in string.gfind(str,"[%z\1-\127\194-\244][\128-\191]*") do
        words[#words+1] = uchar
    end
    return words
end

function cc.filterSensitiveWord(str)
    local filter = {
        [" "] = true,["。"] = true,[","] = true,["、"] = true,[";"] = true,[":"] = true,["’"] = true,["‘"] = true,["."] = true,[","] = true,["/"] = true,[";"] = true,[":"] = true,["'"] = true,}

    print("原字符:",str)
    local words = cc.splitStringToWords(str)
    local exist = false
    local pos = 1
    while pos <= #words do
        local tmp = pos
        local t = cc.csvData["sensitive_words"][words[pos]]
        while t ~= nil do
            if next(t) then
                tmp = tmp +1
                if filter[words[tmp]] then
                    tmp = tmp +1
                end
                t = t[words[tmp]]
            else
                print("find",pos,tmp)
                exist = true
                for i=pos,tmp do
                    if filter[words[i]] ~= true then
                        words[i] = "*"
                    end
                end
                break
            end
        end
        if tmp ~= pos then
            pos = tmp
        else
            pos = pos +1
        end
    end
    local newStr = ""
    if exist then
        for i=1,#words do
            newStr = newStr .. words[i]
        end
    else
        newStr = str
    end
    print("过滤后:",newStr)
    return newStr
end



csv = path.."config/sensitive_words.csv"
    cc.csvData["sensitive_words"] = {}
    cc.praseCSV(csv,function (idx,vals)
            local words = cc.splitStringToWords(vals["code"])
            --print("word",vals["code"],#words)
            local t = cc.csvData["sensitive_words"]
            local pos = 1
            while pos <= #words do
                if not t[words[pos]] then
                    t[words[pos]] = {}
                end
                t = t[words[pos]]
                pos = pos+1
            end
        end)
单词
code
习大大

猜你在找的Cocos2d-x相关文章