前端之家收集整理的这篇文章主要介绍了
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
习大大