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,'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#',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]- у всех значений, обнаруженных между разделителями, будут отсечены прилегающие пробелы.
Примеры использования:
Посмотрим на выборку строк по разным разделителям на примере одного текста. Текст помещаем в переменную для удобства записи:
Я весь мир мечтаю продать.
Время - деньги. Пусть стрелки бегут на часах -
И мне нечего больше желать."
Разбиваем на строки по символу переноса строки:
',''
Результат:
$mass[1]='Я весь мир мечтаю продать.'
$mass[2]='Время - деньги. Пусть стрелки бегут на часах -'
$mass[3]='И мне нечего больше желать.'
Разбиваем на строки по пробелу:
Результат (Заметьте, что символ переноса строки в этом случае попадает в результирующие строки. Туда же попадают знаки препинания и прочее):
$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]='желать.'
А вот пример выборки по нескольким разделителям с игнорированием пустых строк. Из текста будут выбраны исключительно слова:
)','[notspace] [regular] [lcase]'
Результат:
$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] — в каждой строке отсекаются прилегающие пробелы.
Пример работы:
Для удобства помещаем текст в переменную:
первая строка 1
вторая строка 2
третья строка
"
Результат расширенного отсечения:
" первая строка 1
вторая строка 2
третья строка"
Результат отсечения символов преформатирования:
"первая строка 1
вторая строка 2
третья строка"
В последнем случае остекаются не только пробелы и символы табуляции перед строками, но и в конце.
#str.thin#
Предназначение этой функции разрежать строку. Через определённое количество символов в строку вставляются разделители.
$args[0] - строка, текст;
args[1] - через какое количество символов вставлять разделитель. По умолчанию разделитель вставляется через каждый один символ;
$args[2] - разделитель. По умолчанию символ пробела;
$args[3] - управление:
[up]- разрежает текст от последнего символа к первому;[right]- добавляет разделитель в конце разрежаемой строки;[left]- добавляет разделитель перед разрежаемой строкой.
Примеры:
$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]')="||п||р||о||ф||е||с||с||у||р||а||"