Вход
Приветствую Вас Гость
 

easy.math.qsp v. 2.4.0

Операции с текстом

#zero#

Функция предназначена для генерации строки из повторяющихся групп символов.

 args[0] - количество генерируемых групп (только число)
$args[1] - какие символы должны присутствовать в строке. По умолчанию '0'. Только текстовое значение.

Если написать в $args[1] не один символ а группу, будет сгенерирована строка из  args[0] повторяющихся групп символов.

Количество повторений символов, как видно, ограничено ограничениями Вашего плеера на использование значений переменных (для QSP 5.7.0 в пределе [-2147483648 ... 2147483647]).

Результат работы функции:
$func('#zero#',13)='0000000000000'
$func('#zero#',13,'1')='1111111111111'
$func('#zero#',13,'10')='10101010101010101010101010'
$func('#zero#',13,'a')='aaaaaaaaaaaaa'
$func('#zero#',3,'bla')='blablabla'

#rndstr#

Функция получает строку случайных символов

 args[0] - необходимая длина строки. Если не задана, выбирается случайным образом от 1 до 8 символов. Только число
$args[1] - символы, которых не должно быть в строке, либо управляющая конструкция:
  • [include] или [inc] - указывает, что нужно включить в набор только указанные предопределённые группы символов. Для указания групп используются дополнительные команды:
    • [\d] - включить цифры
    • [\h] - включить шестнадцатеричные цифры
    • [\s] - включить пробел и символ табуляции
    • [\w] - включить буквы, цифры и символ подчёркивания (в т.ч. кириллица)
    • [\я] - включить кириллические символы
    • [\z] - включить латинские символы
    • [\all] - все выше перечисленные наборы символов
    Пример: [inc][\d][\z] - цифры и латинские буквы.
    Дополнительно с этим можно использовать трансляцию регистра:
    • [lcase] - перевести все символы в нижний регистр (только для букв)
    • [ucase] - перевести все символы в верхний регистр (только для букв)
  • [only this] или [ot] - указывает, что в набор нужно включить только символы, перечисленные в $args[2]
$args[2] - символы, стоящие здесь, напротив включаются в строку (например, можно добавить пробел к стандартному набору символов, или символ табуляции). Только текст.

Подробнее о том, какие символы будут в сгенерированной строке, смотрите исходник функции с 4 по 10 строчки.

Результат работы функции:
$func('#rndstr#')='вЗНзГШмf'
$func('#rndstr#',16,'[inc][\d][\z][\я]')='у1ЭAXВ6чГVЫДJМxD'
$func('#rndstr#',16)='"i!TОж5wПЬрYхв#а'
$func('#rndstr#',16,'[inc][\d][\z][\я]','$ @ !')='cл4фYЛ7@EnoiЪm А'
$func('#rndstr#',16,'24680','  ©')='f!с/ Xsэu\ZlcХ"u'
$func('#rndstr#')=' c}fjрIЩB'
$func('#rndstr#',16,'[inc][\d][\z][\я]')='БxПxуИЧаgрsмщю9д'
$func('#rndstr#',16)=',5яN}BВPсИ>kJlw['
$func('#rndstr#',16,'[inc][\d][\z][\я]','$ @ !')='@rtwЪnЦFЩиВлМяf'
$func('#rndstr#',16,'2 4 6 8 0','  ©')='Q©)ь©gЪ*Вл<С@ррх'

#chk.obj.word#

Функция вычисляет позицию предмета, содержащего указанное слово или строку, в "инвентаре".

$args[0] - слово

Поиск осуществляется только по конкретному значению. Результатом является число.

Раньше мне приходилось часто совершать поиск по конкретному значению в инвентаре. Сейчас такая необходимость отпала. Но функция осталась, поскольку некоторые игры до сих пор используют её. Вполне возможно, что и Вам она пригодится.

#chk.array.word#

Находит позицию элемента в массиве, содержащего регулярное выражение, либо возвращает -1

$args[0] - имя массива
$args[1] - регулярное выражение
$args[2] - [first] или [last] - первая или последняя позиция
 args[3], args[4] - с какого по какой элемент проводить поиск

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

При больших размерах массива (более 1000 элементов на core-i5/x64/2,5 ГГц/8 Гб RAM), функция может заметно подвешивать плеер.

#str.inArray#

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

$args[0] - отрывок текста, который нужно разбить на строки
$args[1] - имя массива, в который нужно поместить полученные строки
$args[2] - разделитель, по которому нужно произвести выборку строк.
$args[3] - дополнительные опции (можно комбинировать, записав через пробел):

  • [trim] - если строка до первого разделителя и/или строка после последнего разделителя окажутся пустыми, они не будут добавлены в массив,
  • [notspace] - будут проигнорированы все пустые строки между разделителями,
  • [left] - сохранить в результирующей строке (строке, помещённой в массив) разделитель, поместив его слева (в начале строки),
  • [right] - сохранить в результирующей строке (строке, помещённой в массив) разделитель, поместив его справа (в конце строки),
  • [regular] - указанный в $args[2] разделитель считается регулярным выражением. При использовании этой опции, опции [left] и [right] не работают.
  • [ucase] - все результирующие строки будут приведены к верхнему регистру. Имеет приоритет перед [lcase]. Не влияет на разделители.
  • [lcase] - все результирующие строки будут приведены к нижнему регистру. Не влияет на разделители.
  • [strip] - у всех значений, обнаруженных между разделителями, будут отсечены прилегающие пробелы.
Примеры использования:

Посмотрим на выборку строк по разным разделителям на примере одного текста. Текст помещаем в переменную для удобства записи:

$text="Адское Пекло и Небеса -
Я весь мир мечтаю продать.
Время - деньги. Пусть стрелки бегут на часах -
И мне нечего больше желать."

Разбиваем на строки по символу переноса строки:

gosub '#str.inArray#',$text,'$mass','
'
,''

Результат:

$mass[0]='Адское Пекло и Небеса -'
$mass[1]='Я весь мир мечтаю продать.'
$mass[2]='Время - деньги. Пусть стрелки бегут на часах -'
$mass[3]='И мне нечего больше желать.'

Разбиваем на строки по пробелу:

gosub '#str.inArray#',$text,'$mass',' ',''

Результат (Заметьте, что символ переноса строки в этом случае попадает в результирующие строки. Туда же попадают знаки препинания и прочее):

$mass[0]='Адское'
$mass[1]='Пекло'
$mass[2]='и'
$mass[3]='Небеса'
$mass[4]='-
Я'

$mass[5]='весь'
$mass[6]='мир'
$mass[7]='мечтаю'
$mass[8]='продать.
Время'

$mass[9]='-'
$mass[10]='деньги.'
$mass[11]='Пусть'
$mass[12]='стрелки'
$mass[13]='бегут'
$mass[14]='на'
$mass[15]='часах'
$mass[16]='-
И'

$mass[17]='мне'
$mass[18]='нечего'
$mass[19]='больше'
$mass[20]='желать.'

А вот пример выборки по нескольким разделителям с игнорированием пустых строк. Из текста будут выбраны исключительно слова:

gosub '#str.inArray#',$text,'$mass','("|!|\?|-|,|;|:|\.| |
)'
,'[notspace] [regular] [lcase]'

Результат:

$mass[0]='адское'
$mass[1]='пекло'
$mass[2]='и'
$mass[3]='небеса'
$mass[4]='я'
$mass[5]='весь'
$mass[6]='мир'
$mass[7]='мечтаю'
$mass[8]='продать'
$mass[9]='время'
$mass[10]='деньги'
$mass[11]='пусть'
$mass[12]='стрелки'
$mass[13]='бегут'
$mass[14]='на'
$mass[15]='часах'
$mass[16]='и'
$mass[17]='мне'
$mass[18]='нечего'
$mass[19]='больше'
$mass[20]='желать'

#widetrim#

Функция похожа на функцию TRIM. Она удаляет прилегающие символы пробелов, табуляций и переводов строк. Так же функция позволяет убирать все символы преформатирования из текста.

$args[0] - обрабатываемый текст
$args[1] - управляющее слово: [strip] — в каждой строке отсекаются прилегающие пробелы.

Пример работы:

Для удобства помещаем текст в переменную:

$text="    
   
   первая строка 1    
вторая строка 2
   
  третья строка
   
       "

Результат расширенного отсечения:

$func('#widetrim#',$text)=
"   первая строка 1    
вторая строка 2
   
  третья строка"

Результат отсечения символов преформатирования:

$func('#widetrim#',$text,'[strip]')=
"первая строка 1
вторая строка 2

третья строка"

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

#str.thin#

Предназначение этой функции разрежать строку. Через определённое количество символов в строку вставляются разделители.

$args[0] - строка, текст;
 args[1] - через какое количество символов вставлять разделитель. По умолчанию разделитель вставляется через каждый один символ;
$args[2] - разделитель. По умолчанию символ пробела;
$args[3] - управление:
  • [up] - разрежает текст от последнего символа к первому;
  • [right] - добавляет разделитель в конце разрежаемой строки;
  • [left] - добавляет разделитель перед разрежаемой строкой.
Примеры:
$func('#str.thin#','профессура')="п р о ф е с с у р а"
$func('#str.thin#','профессура',1,'|')="п|р|о|ф|е|с|с|у|р|а"
$func('#str.thin#','профессура',3,'|')="про|фес|сур|а"
$func('#str.thin#','профессура',3,'|','[up]')="п|роф|есс|ура"
$func('#str.thin#','профессура',3,'|','[left]')="|про|фес|сур|а"
$func('#str.thin#','профессура',2,'|','[right]')="пр|оф|ес|су|ра|"
$func('#str.thin#','профессура',1,'||','[left] [right]')="||п||р||о||ф||е||с||с||у||р||а||"
Наверх