Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама



**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 100руб/мес, Текстовая 50руб/мес.
Показано с 1 по 7 из 7

Тема: TDW String Library

  1. #1
    Аватар для VVWVV
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    358
    Репутация:
    171 ±

    TDW String Library

    TDW String Library
    github

    Описание:
    Добавляет большое количество новых функций для работы со строками.

    Функции:
    Функция Описание Возвращает
    erase_first(string[], const find[], bool:ignorecase = false, pos = 0) Вырезает первую найденную подстроку(find) из строки. Позицию начала подстроки в строке
    erase_last(string[], const find[], bool:ignorecase = false) Вырезает последнюю найденную подстроку(find) из строки. Позицию начала подстроки в строке
    erase_nth(string[], const find[], n, bool:ignorecase = false, pos = 0) Вырезает 'n' найденных подстрок -1
    erase(string[], start_pos, length = cellmax) Вырезает определённое количество символов, заданных в start_pos(начало) и length(количество символов) -1
    find_first(const string[], const find[], bool:ignorecase = false, pos = 0) Ищет подстроку(find) в строке Позицию начала подстроки в строке, в противном случае -1
    find_last(const string[], const find[], bool:ignorecase = false) Ищет последнюю найденную подстроку(find) из строки. Позицию начала подстроки в строке, в противном случае -1
    find_first_of(const string[], const charlist[], pos_string = 0, size = sizeof string) Ищет первый попавшийся символ из массива(charlist) в строке. Позицию первого попавшегося символа в строке, в противном случае -1
    find_last_of(const string[], const charlist[]) Ищет первый попавшийся символ из массива(charlist) с конца строки. Позицию первого попавшегося символа с конца строки, в противном случае -1
    find_first_not_of(const string[], const charlist[], pos_string = 0, size = sizeof string) Ищет первый попавшийся символ не из массива(charlist) в строке. Позицию первого попавшегося символа в строке, в противном случае -1
    find_last_not_of(const string[], const charlist[]) Ищет первый попавшийся символ не из массива(charlist) с конца строки. Позицию первого попавшегося символа в строке, в противном случае -1
    replace_first(string[], const find[], const replace[], bool:ignorecase = false, pos = 0, string_size = sizeof string) Заменяет первую найденную подстроку(find) строкой(replace). Если строка найдена - 1, в противном случае 0.
    replace_last(string[], const find[], const replace[], bool:ignorecase = false, pos = 0, string_size = sizeof string) Заменяет последнюю найденную подстроку(find) строкой(replace). Если строка найдена - 1, в противном случае 0.
    replace_nth(string[], const find[], const replace[], n, bool:ignorecase = false, pos = 0, string_size = sizeof string) Заменяет 'n' найденных подстрок(find) строкой(replace) Если строка найдена - 1, в противном случае 0.
    replace_all(string[], const find[], const replace[], bool:ignorecase = false, pos = 0, string_size = sizeof string) Заменяет все подстроки(find) строкой(replace) Если строка найдена - 1, в противном случае 0.
    IsPackedString(string[]) Определяет формат записи строки в памяти. Возвращает true, если строка упакована, в противном случае - false
    IsEmptyString(const string[]) Возвращает true, если строка пустая, в противном случае - false
    memcmp(const string1[], const string2[], n = cellmax, size_1 = sizeof string1, size_2 = sizeof string2) Проверяет строки в памяти на соответствие между ними. Возвращает 0, если блоки идентичны
    strcount(const string[], const find[], bool:ignorecase = false, pos = 0, string_size = sizeof string) Подсчитывает количество подстрок(find) в строке Количество вложенных подстрок
    strreverse(string[]) Переворачивает строку -
    trim_left(string[], const delimiter = ' ') Обрезает символы(delimiter) с начала строки -
    trim_right(string[], const delimiter = ' ') Обрезает символы(delimiter) с конца строки -
    trim(string[], const delimiter = ' ') Обрезает символы(delimiter) с двух сторон строки -
    strparttoupper(string[], part_start, part_end, string_size = sizeof string) Данная функция изменяет строчные буквы на заглавные на отдельных участках строки. -
    strparttolower(string[], part_start, part_end, string_size = sizeof string) Данная функция изменяет заглавные на строчные буквы на отдельных участках строки. -
    countofuppercase(const string[]) Подсчитывают количество заглавных букв в строке. число (процент)
    countoflowpercase(const string[]) Подсчитывают количество строчных букв в строке. число (процент)
    strtrtrans(string[]) Переводит русские символы в транслитерацию. -
    islowerpart(const string[], start_part_pos, end_part_pos) Проверяет отдельный участок кода на наличие символов в нижним регистре. Возвращает true, если в отдельный участке все символы в нижним регистре, иначе false.
    isupperpart(const string[], start_part_pos, end_part_pos) Проверяет отдельный участок кода на наличие символов в верхнем регистре. Возвращает true, если в отдельный участке все символы в верхнем регистре, иначе false.
    strcatex(dest[], size, const ...) Соединяет строки друг с другом по средством strcat. Возвращает количество символов.
    strfill(string[], const pattern[] = " ", fill_length, E_TDW_FILL_TYPE:type = FILL_TYPE_BOTH, size = sizeof string) Заполняет строку указанной подстрокой. Возвращает 1, если fill_length меньше чем size, иначе 0.
    strimplodeex(dest[], const delimiter[] = !" ", dest_size = sizeof dest, const ...) Заполняет строки с разделителем(delimiter). Количество символов (без размера разделителя).
    strimplode(dest[], const arrays[][], const delimiter[] = !" ", array_items = sizeof arrays, dest_size = sizeof dest) Тоже самое, что и strimplodeex, однако значения берутся из массива. -
    strsplit(dest[], const string[], &index, const seperator = ' ') Подобие strtok, но в более лучшем виде. Примечание: не работает с упакованными строками. -
    replace_sumbol(string[], find[2], replace, pos = 0) Заменяет один символ в строке. -

    Скачать:

    Установка:
    1. Скачать библиотеку.
    2. Все файлы, точнее библиотеки, переместить в папку 'pawno/includes'. Впрочем, можно воспользоваться флагом '-i<путь>' для указания альтернативного пути для библиотек.
    3. Библиотеки необходимо подключать после файла 'a_samp'.
      Пример:
      PHP код:
      #include <a_samp>
      #include <tdw_string> 
    4. Скомпилировать изменённые вами скрипты.


    Благодарности:
    • Untonyst (оптимизация/составление функций)
    • Nexius (идеи некоторых функций)
    • ziggi (советы и идеи к функциям)
    • DeimoS (фикс функции)


    Распространяется по лицензии ZLIB.
    Последний раз редактировалось VVWVV; 04.11.2016 в 03:30. Причина: Обновление 04.11.2016

  2. 2 пользователя(ей) сказали cпасибо:
    Anton Styazhkin (13.10.2016)Londlem (05.11.2016)
  3. #2
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    639
    Репутация:
    511 ±
    Почему для find_first есть pos, а для find_first_of и других подобных функций этого параметра нет?
    Что насчёт compare или isequal? Для замены багнутого strcmp. Вижу memcmp, но он требует указание длины, в принципе этот параметр можно сделать не обязательным, как сделано в stcmp.
    Ещё бы не помешали какие-нибудь strtoupper и strtolower, для перевода всей (или части) строки в верхний и нижний регистр соответственно. Только с учётом кириллицы.

    А в целом - круто, жаль что в Pawn нельзя сделать поддержку перегрузки операторов для массивов. Было бы классно склеивать строки через + и сравнивать через ==.
    P.S. Закинь в README список функций, так будет удобнее.
    P.P.S. Вот ещё отсюда можно позаимствовать некоторые функции.
    Последний раз редактировалось ziggi; 14.10.2016 в 21:18.

  4. Пользователь сказал cпасибо:
    VVWVV (14.10.2016)
  5. #3
    Аватар для VVWVV
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    358
    Репутация:
    171 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Почему для find_first есть pos, а для find_first_of и других подобных функций этого параметра нет?
    Что насчёт compare или isequal? Для замены багнутого strcmp. Вижу memcmp, но он требует указание длины, в принципе этот параметр можно сделать не обязательным, как сделано в stcmp.
    Ещё бы не помешали какие-нибудь strtoupper и strtolower, для перевода всей (или части) строки в верхний и нижний регистр соответственно. Только с учётом кириллицы.
    Спасибо, учту все предложения.

    UPD: Добавил.

    Цитата Сообщение от ziggi Посмотреть сообщение
    А в целом - круто, жаль что в Pawn нельзя сделать поддержку перегрузки операторов для массивов. Было бы классно склеивать строки через + и сравнивать через ==.
    Я делал что-то подобное, но смутил синтаксис (вот коммит удаления).
    Последний раз редактировалось VVWVV; 15.10.2016 в 00:15.

  6. #4
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    639
    Репутация:
    511 ±
    Цитата Сообщение от VVWVV Посмотреть сообщение
    Я делал что-то подобное, но смутил синтаксис (вот коммит удаления).
    И как оно выглядело?

  7. #5
    Аватар для VVWVV
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    358
    Репутация:
    171 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    И как оно выглядело?
    Как-то так:
    PHP код:
    new a[10], b[3];
    s<b>; // strcpy
    s<--a[,]>; // strdel
    s<?? "b"!>; // strfind(a, "b", true, 0)
    s<b>; // strcat(...) 
    Взял синтаксис от Python и Haskell.

  8. #6
    Аватар для VVWVV
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    358
    Репутация:
    171 ±
    Обновление 03/10/2016 (версия: 1.1.8):
    - Добавлены функции strparttoupper и strparttolower
    Данные функции изменяют строчные буквы на заглавные (и наоборот) на отдельных участках строки.
    - Добавлены функции countofuppercase и countoflowpercase
    Подсчитывают количество заглавных и строчных букв в строке.
    - Добавлена функция strtrtrans
    Переводит русские символы в транслитерацию.

    Обновление 19/10/2016 (версия: 1.1.15):
    - Добавлены новые функции в файлы тестов.
    - Изменена функция IsPackedString.
    - Добавлены новые аргументы функциям: memcmp, find_firs_not_of, find_first_of
    - Добавлена поддержка Cririlic (Windows-1251)
    - Добавлены новые функции islowerpart, isupperpart
    - Добавлен новый псевдо-оператор foreach_string (beta)

    Обновление 26/10/2016 (версия 1.1.19):
    - Добавлена новая функция strcatex
    - Из-за того, что github не поддерживает Windows-1251, было решено перенести все зависимые от кодировки функции в отдельный файл depend_encoding.
    - Исправлены некоторые ошибки (errors), предупреждения (warnings), баги.
    Последний раз редактировалось VVWVV; 27.10.2016 в 00:41.

  9. Пользователь сказал cпасибо:
    Anton Styazhkin (27.10.2016)
  10. #7
    Аватар для VVWVV
    Пользователь

    Статус
    Оффлайн
    Регистрация
    09.07.2015
    Сообщений
    358
    Репутация:
    171 ±
    Обновление 04/11/2016 (Версия 1.1.32):
    - Добавлены функции strcatex, strfill, strimplodeex, strimplode, strsplit, replace_sumbol (автор: Deimos).
    - Некоторые функции переехали в отдельные файлы.
    - Исправлены некоторые ошибки.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •