Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   антимат функция для текстового поля (http://www.flasher.ru/forum/showthread.php?t=172243)

argoniummm 05.12.2011 08:30

антимат функция для текстового поля
 
Здравствуйте, нужна помощь с созданем анитимата для текстового поля. Нужно, чтобы есл иопле содержит мат - то это слово исчезает. Как я понимаю тут нужно использовать RegExp, но к сожалению я с ним не умею работать. Можете пожалуйста помочь с кодом?

fish_r 05.12.2011 08:47

от RegExp тут толку не много, я бы юзал массив матов и String.indexOf()

goodguy 05.12.2011 09:01

Цитата:

Здравствуйте, нужна помощь с созданем анитимата для текстового поля.
нужен будет словарь матов, коих в русском языке пруд пруди :D Задача на грани фантастики

argoniummm 05.12.2011 09:09

Хотябы основное... Вот. Правильно?
Код AS3:

var bad_mass:Array = [слово1, слово2, слово3];
var str:String = "текст в котором есть слово1";
for (int i = 0; i<bad_mass.length; i++)
{
var result:Array = bad_mass[i].replace(str);
}


GBee 05.12.2011 09:22

Антимат вряд ли задача для клиента. Самое популярное заборное слово вам напишут в таких вариантах, что замучаетесь флэшку пересобирать. Причем будут делать это не со зла, а интереса ради: пройдет-не пройдет.

fish_r 05.12.2011 09:49

Исключительно программно это решить, конечно, не удастся, но ограничит реально возможность сквернословить. И не так уж много для этого надо. Если, конечно, не закладываться на 100% результат.
У матерных слов корни (часть слова - прим.переводчика :) ) достаточно индивидуальные.

Добавлено через 24 минуты
@argoniummm заменять слова пробелами, возможно, не самая лучшая идея, потому как матерки могут не только "перца" добавлять, но и являться смысловой частью месседжа, может лучше предложить исправить это слово пользователю?

DaFive 05.12.2011 10:26

Все пишут свой антимат, да никто не напишет. Настолько богат великий и могучий.
А когда юзеры доканают жалобами за оскорблять, застрахуй и иже с ними - поймете, что проще модератора назначит и чистить список.

fish_r 05.12.2011 11:03

Там особо и писать то нечего. Оскорблять, застрахуй - слова исключения и таких не много. А насчет модерации, да, без этого никак. Фильтр лишь как вспомогательный инструмент. С другой стороны, если даже нет модерации, но фильтр заставляет ругаться иносказательно уже не так пакостно выглядит )

Добавлено через 24 минуты
В BadCompanyII встроен фильтр англо- (американо- (?)) матерных слов. Вот, блин, доставляло когда какому нибудь аимщику высказать не можешь :)

DaFive 05.12.2011 11:37

Цитата:

Сообщение от fish_r (Сообщение 1049787)
от RegExp тут толку не много, я бы юзал массив матов и String.indexOf()

Да, почему от RegExpа толку мало? Скорее от indexOf в данном случае толку никакого совершенно.

fish_r 05.12.2011 11:48

Цитата:

Сообщение от DaFive (Сообщение 1049802)
Да, почему от RegExpа толку мало? Скорее от indexOf в данном случае толку никакого совершенно.

Всё не словите все равно. Реги медленнее работают. Обслуживать тяжелее. А результаты будут примерно такие же как от indexOf.

DaFive 05.12.2011 11:55

Да почему же? Словлю. Вот indexOfом не словлю.
Если по вашей схеме (массив - IndexOf) - то любая точка или символ в слове рушат сразу всю логику.
Код AS3:

var arr:Array = ['слово1', 'слово2'];
var str:String = 'Эй, Юзер, да иди ты на с.лово1!!!111';
trace(str.indexOf(arr[0])); // profit!

Убирать все лишнее из строки? Опять же регулярка. А зачем не использовать indexOf, если я все могу запихнуть в регулярку? Всё не словишь, я не спорю. Но с indexOf словить то, что можно, грамотно орудуя с регуляркой, просто невозможно.

TanaTiX 05.12.2011 12:14

Достаточно что-то рассказать про то, как "у стебля меняется со временем цвет" и т.п., как антимат начнет только мешать. Таких примеров великое множество.

DJDrugsounD 05.12.2011 12:29

я когда делал, сначала убирал все символы кроме букв, и потом проверял на маты, а то б начали писать через точки пробелы и т.д.

Добавлено через 2 минуты
вот вам минимальный список исключений
Цитата:

рубл;нибал;абля;обля;оскорбля;шибал;гибал;хулига;требля;скреба;скребе;страх;стеб;хлеб;скипидар;любля;барсук

argoniummm 05.12.2011 16:41

Код AS3:

var bad_mass:Array = [слово1, слово2, слово3];
var str:String = "текст в котором есть слово1";
for (int i = 0; i<bad_mass.length; i++)
{
var result:Array = bad_mass[i].replace(str);
}

я так и не понял... Это правильный код? Главное убрать прямой мат...

DaFive 05.12.2011 17:08

Неправильный код.
Слова в массиве в кавычки, переменная в цикле объявляется не так и replace возвращает не Array, а String.
Код AS3:

str = str.replace(bad_mass[i], "");


argoniummm 05.12.2011 17:15

Код AS3:

var bad_mass:Array = ["слово1", "слово2", "слово3"];
var str:String = "текст в котором есть слово1";
for (int i = 0; i<bad_mass.length; i++)
{
str = str.replace(bad_mass[i], "");
}

Вот.

DaFive 05.12.2011 17:26

Вы гадаете? Ответ неверный, осталось 2 попытки:
Цитата:

1084: Syntax error: expecting semicolon before i. Line:3

GBee 05.12.2011 20:14

текст в котором есть сЛово1
текст в котором есть сЛоВо1
текст в котором есть сЛОВо1

с, х, о, е, у, а, м, т, М
c, x, o, e, y, a, m, t, M

DaFive 05.12.2011 20:21

для регистра toLowerCase() хватит, а с остальным беда.

MXPain 06.12.2011 02:48

вот вам мой фирменный регэксп

Код AS3:

var str:String=" здесь можно материться";
var pat:RegExp = /(\.*[хh]{1,}\.*|\[*[хh]{1,}\]*|[хh]{1,})(\.*[уu]{1,}\.*|\[*[уu]{1,}\]*|[уu]{1,})(\.*[йyяиею]{1,}\.*|\[*[йyяиею]{1,}\]*|[йyяиею]{1,})/gi
str.replace(pat, "*");



Часовой пояс GMT +4, время: 17:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.