Главная | Комментарии | О проекте
Чтение RSS
Суперсайт
Главная Контакты Карта сайта Добавить в избранное
  • Кто OnLine

    Всего на сайте: 8
    Гостей: 3
    Пользователи: - отсутствуют
    Роботы: Yandex Bot, Yandex Bot, crawl Bot, robot Bot, Google AdSense

    Опрос пользователей

    Для какого мода Вы пишите плагины?

    • Популярное

    Рекомендуем

    • AMX Mod X
    • up.org.ua

    Наши друзья


  • Автор: Admin Дата: 5-12-2011, 09:43 Просмотров: 4713

    replace_all Функция заменяет все найденные совпаденя на представленные в строке

    В последнее время культурных игроков очень мало, очень много подростков и просто детей которые хотят чувствовать себя более взрослыми и видимо по этому ругаются матом, что бы хоть как то бороться с этим делом было написано не мало антиматов, но молодежь очень быстро находит способы обходить все антиматы, в том числе ставя между буквами какие то символы, например точки, и по этому антимат не видит слово целиком, но мы можем удалить все точки и другие чаще всего используемые символы, что бы слова вновь стали словами. И поможет в этом функция replace_all, которая ищет все совпадения в тексте и заменяет их нужными символами.

    Инфо из string.inc:
    /* Replaces a contained string iteratively.
    * This ensures that no infinite replacements will take place by
    *  intelligently moving to the next string position each iteration.
    */
    stock replace_all(string[], len, const what[], const with[])
    {
        new pos = 0;
        
        if ((pos = contain(string, what)) == -1)
        {
            return 0;
        }
        
        new total = 0;
        new with_len = strlen(with);
        new diff = strlen(what) - with_len;
        new total_len = strlen(string);
        new temp_pos = 0;
        
        while (replace(string[pos], len - pos, what, with) != 0)
        {
            /* jump to position after replacement */
            pos += with_len;
            
            /* update cached length of string */
            total_len -= diff;
            
            /* will the next call be operating on the last character? */
            if (pos >= total_len)
            {
                break;
            }
            
            /* find the next position from our offset */
            temp_pos = contain(string[pos], what);
            
            /* if it's invalid, we're done */
            if (temp_pos == -1)
            {
                break;
            }
            
            /* otherwise, reposition and update counters */
            pos += temp_pos;
            total++;
        }
        
        return total;
    }


    Синтаксис:
    replace_all ( string[], len, what[], with[] )

    • string[] - Строка в которой будут происходить замены
    • len - Максимальная длинна строки
    • what[] - Что заменить
    • with[] - На что заменить


    Тип функции:
    stock

    Пример:
    /* Plugin generated by AMXX-Studio */

    #include <amxmodx>
    #include <amxmisc>

    #define PLUGIN "[string.inc] replace_all"
    #define VERSION "1.0"
    #define AUTHOR "Admin"


    public plugin_init() {
        register_plugin(PLUGIN, VERSION, AUTHOR)
        register_concmd("func_replace_all","func_replace_all")
    }
    public func_replace_all(){
        

        new text[] = {"Its text for text replace"}
        new what[] = {"text"}
        new whith[] = {"MEGA"}
        
        server_print("Test:%s",text)

        replace_all(text,64,what,whith)
        
        server_print("Test:%s",text)
    }


    Описание:
    Функция по своей работе аналогична функции replace, но с существенным отличием, она ищет не одно точное совпадение в тексте, а все.
    То есть если кто то написал слово P.L.U.G.I.N, то можно указать функции искать в тексте точки и заменять их на ничто ( тоесть просто удалить) тогда получится так PLUGIN.

    Любое другое применение функции, зависит от вашей фантази.
    Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
    Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
    Proo.Noob

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Теперь напиши статью как считывать сообщения пользователей и возвращать их в изменённом виде...
    Admin

    30.07.2011
    ICQ: 980500
    Публикаций: 507
    Комментариев: 333
    Репутация: -  56  +

    Любой плагин антимата в помощь.
    --------------------
    mika3394

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    есть аналог без учёта регистра?
    Maksovich

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    А регулярки поддерживает?
    gavrilyuc

    --
    ICQ: --
    Публикаций: 0
    Комментариев: 0
    Репутация: -  0  +

    Maksovich, ну, наверное что нет.
    Я не уверен. но скорей всего, что есть в модуле regex функция поиска, ты можешь написать свой replace с регуляркой. Возможно, что есть такая функция в модуле regex...
    Я просто не очень часто использую регулярки...

    Информация

    Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Наверх

Реклама