您的位置:首页 > 移动开发 > Cocos引擎

cocos2d-lua敏感词过滤函数

2015-12-02 16:46 441 查看
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
习大大
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: