String



  • Название: String
    Версия: 1.0
    Данные: String.zip
    Исходник: -.
    Согласие на добавление модуля в BAS: Модуль будет добавлен в следующую версию BAS.
    Описание: В модуле собрано множество полезных действий для работы со строками и не только. В него так же перенесены несколько стандартных действий.
    История версий:

    Скриншоты:
    9b361c76-d9bf-4657-9ed1-15cf46f58dc0-image.png


    Модуль хорошо оттестирован, но если вы будете испытывать проблемы при работе, то можно их описать в этой теме.



  • Отличный подгон! Столько много плюшек в одном модуле закачаешься! Покруче Notepad ++ с плагинами! GhostZ респект!



  • @Fox Вот это да!!!



  • За Punycode и парсить CSV со своими разделителями отдельное спасибо!



  • @Fox Автор @GhostZ а карма тебе, дедовщина?! xD



  • ВАУ!
    спасибо @GhostZ



  • @UserTrue said in String:

    @Fox Автор @GhostZ а карма тебе, дедовщина?! xD

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



  • @Fox said in String:

    @UserTrue said in String:

    @Fox Автор @GhostZ а карма тебе, дедовщина?! xD

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

    Так мы и поверили, все кармы нахапаться не можешь (больше чем у @support), у самого поди уже ершик золотой в туалете стоит! xD



  • @UserTrue said in String:

    @Fox said in String:

    @UserTrue said in String:

    @Fox Автор @GhostZ а карма тебе, дедовщина?! xD

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

    Так мы и поверили, все кармы нахапаться не можешь, у самого поди уже ершик золотой в туалете стоит! xD

    и дача в Геленджике? ))



  • @Fox said in String:

    @UserTrue said in String:

    @Fox said in String:

    @UserTrue said in String:

    @Fox Автор @GhostZ а карма тебе, дедовщина?! xD

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

    Так мы и поверили, все кармы нахапаться не можешь, у самого поди уже ершик золотой в туалете стоит! xD

    и дача в Геленджике? ))

    Видимо! Тот мужчина сказал же, что не его! )))



  • Отличный модуль, спасибо! @GhostZ



  • Новый бас на подходе)



  • Кстати, помимо действий, модуль содержит множество функций которые не выполнены в виде действий по различным причинам. Вот пример некоторых таких функций:

    _get_type(data) //Вернет тип указанных данных. В отличии от typeof возвращает не просто object при любом объекте, а object, null, array, date или regexp в зависимости от объекта.
    _get_type(123) //"number"
    _get_type("hi") //"string"
    _get_type([1,2,3]) //"array"
    _get_type(/\s/) //"regexp"
    
    _is_nil(data) //Вернет true, если data равно undefined или null, в остальных случаях вернет false.
    _is_nil(undefined) //true
    _is_nil(null) //true
    _is_nil(123) //false
    
    _is_nilb(data) //Вернет true, если data равно undefined, null, пустой строке, в остальных случаях вернет false.
    _is_nilb(undefined) //true
    _is_nilb(null) //true
    _is_nilb("") //true
    _is_nilb("hi") //false
    
    _avoid_nil(data, def) //Если data равно undefined или null, то вернет def. Если def не указан, вернет пустую строку.
    _avoid_nil(undefined) // ""
    _avoid_nil(null, 1) //1
    _avoid_nil(true) //true
    
    _avoid_nilb(data, def) //Если data равно undefined, null, пустой строке, то вернет def. Если def не указан, вернет пустую строку.
    _avoid_nilb(undefined) // ""
    _avoid_nilb(null, 1) //1
    _avoid_nilb("", 2) //2
    _avoid_nilb([1,2,3]) //[1,2,3]
    
    _from_string(str) //Преобразует указанную строку в другой тип данных, в число, true или false, объект или массив, null или undefined.
    _from_string("123") //123
    _from_string("true") //true
    _from_string("null") //null
    _from_string('{"one":1,"two":2,"three":3}') //{one:1, two:2, three:3}
    
    _url(url).set(name, value).toString() //Заменить элемент ссылки, url - ссылка, name - название элемента, value - значение элемента.
    _url('https://site.com/topic/14772/string').set('hostname', 'community.bablosoft.com').toString() //"https://community.bablosoft.com/topic/14772/string"
    
    _ua(ua).changeBrowserVersion(version).toString() //Заменить версию браузера в User-Agent, ua - User-Agent, version - нужная версия браузера. Работа проверялась только с User-Agent от Chrome.
    _ua('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36').changeBrowserVersion('88.0.4324.104').toString() //"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"
    


  • Спасибо. Продуктивная работа. Правда, большинство из этих действий привык делать на js. Переучиться вряд ли смогу, но, мне кажется, что для новичков - это самый персик :)



  • @GhostZ огласите весь список функций, пожалуйста



  • @romanbiz, все полезные функции не имеющие действий:

    _get_type(data) //Вернет тип указанных данных. В отличии от typeof возвращает не просто object при любом объекте, а object, null, array, date или regexp в зависимости от объекта.
    
    _validate_argument_type(data, type, name, act) //Вернет ошибку если тип data не соответствует указанному аргументу type, name - имя аргумента, act - имя действия. type может быть списком из нескольких возможных типов.
    
    _is_nil(data) //Вернет true, если data равно undefined или null, в остальных случаях вернет false.
    
    _is_nilb(data) //Вернет true, если data равно undefined, null, пустой строке, в остальных случаях вернет false.
    
    _avoid_nil(data, def) //Если data равно undefined или null, то вернет def. Если def не указан, вернет пустую строку.
    
    _avoid_nilb(data, def) //Если data равно undefined, null, пустой строке, то вернет def. Если def не указан, вернет пустую строку.
    
    _escape_regexp(str) //Экранирует специальные символы регулярных выражений в указанной строке
    
    _uniq_arr(arr) //Вернет указанный список без дубликатов
    
    _sort_arr(arr, asc) //Вернет отсортированный список, asc - необязательный параметр, сортировать по возрастанию, если true или не указан отсортирует по возрастанию, если false отсортирует по убыванию.
    
    _is_json_string(data) //Вернет true, если data является валидной json строкой, в остальных случаях вернет false.
    
    _to_arr(data) //Преобразовывает указанную строку в список/объект.
    _to_arr([1, 2, 3]) //[1, 2, 3]
    _to_arr('[1,2,3]') //[1, 2, 3]
    _to_arr('{"a":1,"b":2,"c":3}') //{a:1, b:2, c:3}
    _to_arr('1,2,3') //[1, 2, 3]
    _to_arr('one, two, three') //['one, 'two', 'three']
    
    _no_exponents(num) //Преобразует число в строку без экспоненты.
    _no_exponents(1e-8) //"0.00000001"
    String(1e-8) //"1e-8"
    
    _from_string(str) //Преобразует указанную строку в другой тип данных, в число, true или false, объект или массив, null или undefined.
    
    _trim_left(str, chars) / _trim_right(str, chars) //Части действия "Подровнять" для левой и правой части, chars - необязательный параметр, обрезаемые символы.
    
    _trim_arr(arr, chars, left, right) //Тоже самое что и действие "Подровнять", но для списка строк. chars - необязательный параметр, обрезаемые символы. left/right - необязательные параметры с каких сторон обрезать.
    
    _clean_arr(arr, chars_to_delete, chars_to_space, multiple_spaces) //Тоже самое что и действие "Очистить", но для списка строк. chars_to_delete/chars_to_space - необязательные параметры, удаляемые символы/символы заменяемые пробелами. multiple_spaces - необязательный параметр, заменять многочисленные пробелы на одиночные.
    
    _normalize_phone_number(phone_number) //Нормализовать телефонный номер. Скорей всего будет улучшена и в будущем добавлена в виде действия.
    _normalize_phone_number('7 (800) 555 35 35') //"78005553535"
    _normalize_phone_number('+78005553535') //"78005553535"
    _normalize_phone_number('88005553535') //"88005553535"
    
    _format_phone_number(phone_number, mask) //Форматировать номер по указанной маске. Скорей всего будет улучшена и в будущем добавлена в виде действия.
    _format_phone_number('78005553535', '+X (XXX) XXX-XX-XX') //"+7 (800) 555-35-35"
    _format_phone_number('+78005553535', 'XXXXXXXXXX') //"8005553535"
    
    _query_string //https://nodejs.org/docs/latest/api/querystring.html
    
    _query_string.encode(obj) //Преобразует объект в строку запроса
    _query_string.encode({foo:'bar',baz:'qux'}) //"foo=bar&baz=qux"
    
    _query_string.decode(str) //Преобразовывает строку запроса в объект
    _query_string.decode("foo=bar&baz=qux") //{foo:'bar', baz:'qux'}
    
    _url(url).set(name, value).toString() //Заменить элемент ссылки, url - ссылка, name - название элемента, value - значение элемента.
    
    _ua(ua).changeBrowserVersion(version).toString() //Заменить версию браузера в User-Agent, ua - User-Agent, version - нужная версия браузера. Работа проверялась только с User-Agent от Chrome.
    
    _punycode //https://www.npmjs.com/package/punycode
    


  • Что за магия тут происходит? Первое сообщение поменяло автора, причём время его отправления меньше, чем время отправления первого комента к теме. @Fox, харе шалить)



  • @DoctorKrolic said in String:

    Что за магия тут происходит? Первое сообщение поменяло автора, причём время его отправления меньше, чем время отправления первого комента к теме. @Fox, харе шалить)

    Да я решил исправить ситуацию, что бы автор модуля мог сам менять шапку и следить за темой. Я просто закрыл свою тему и перенёс все сообщения от туда - сюда.



  • @Fox
    Модуль будет добавлен в следующую версию BAS.
    Вопрос не много не по теме, а когда хоть примерно ждать эту следующую версию в этом месяце или в следующем, или вообще в начале лета?



  • @gomeapat said in String:

    Вопрос не много не по теме, а когда хоть примерно ждать эту следующую версию в этом месяце или в следующем, или вообще в начале лета?

    Нее, я на эту дорожку снова не вернусь! Я не буду говорить ни какие даты, даже примерные, меня потом заклюют в случае чего :D


Log in to reply
 

  • 26
  • 20
  • 188
  • 118
  • 19
  • 66
  • 34
  • 83