Для Тира сделал фильтр нецензурной лексики, а то молокососы в чате достают, матерятся как сапожники, может еще кому пригодится:
package com.grom
{
/**
* ...
* @author Alexander Sorokin aka Grom - http://alexsorokin.ru/
*/
public class WordsFilter
{
private static var words:Array = ["fuck","пидар", "мудак", "чмо", "дибил", "говн", "дерьм",
"тварь", "еблан", "уебашка", "уебатор", "мудила", "пидрила", "мудак", "гавноеб", "ебан", "ебать",
"хер", "пизда", "хуй", "йух", "блять", "блеать", "блиать", "блядь", "блядина", "говноеб", "уебище", "пиздопроебище",
"хуйло", "хуило", "ахуел", "иди на хуй", "иди нахуй", "нахер", "иди впизду", "ебалан", "4мо", "сученок", "сучара",
"гнида", "ебал в рот", "ебал врот", "ебаный", "ебанный ", "хуйня", "херня", "по хуй", "похуй", "ебись",
"придурок", "пидофил", "педофил", "мудоеб", "ёбырь", "ебантяй", "сучка", "дура", "дегенерат", "ебучий"];
public function WordsFilter()
{
}
static public function filter(str:String):String
{
var ttyrt:String = str;
var t:Function = function(s:String, s1:String):int { var d:int = (s.length - s1.length); return d > 0 ? 1 : (d==0 ? 0:-1); }
words.sort(t);
var rr:RegExp = new RegExp('(' + words.join('|') + ')', "igm");
var str:String = ttyrt.toLowerCase();
for (var i:int = 0; i < words.length; i++)
{
var w:String = words[i];
var idx:int = 0;
do {
idx = str.indexOf(w, idx);
if (idx == -1) break;
ttyrt = ttyrt.substr(0, idx) + w.replace(/./ig,'*') + ttyrt.substr(idx + w.length);
str = str.substr(0, idx) + w.replace(/./ig,'*') + str.substr(idx + w.length);
}while (true);
}
return ttyrt;
}
}
}
Код написан по-быстрому на коленке, да и ActionScript - говно редкостное. Так что принимаются предложения по оптимизации.
Кстати, менять при помощи RegExp у меня не вышло - не понимает сравнение без учета регистра.
Comments