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]')="||п||р||о||ф||е||с||с||у||р||а||"