logo.aleks Versus Поиск по сайту:
  Главная | Регистрация | Вход   Приветствую Вас Гость | RSS
Майнпаги
тыц
Стихи.РУ
Проза.РУ
Aleks Versus на LI
Я на Самиздате
читательский дневник
На Книготопии

easy.math.qsp v 2.3.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] - символы, которых не должно быть в строке. Только текст.
Если $args[1] = 'буквы и цифры' - строка только из букв и цифр.
Если $args[1] = 'только это' - для формирования строки используются только символы из $args[2].
$args[2] - символы, стоящие здесь, напротив включаются в строку (например, можно добавить пробел к стандартному набору символов, или символ табуляции). Только текст

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

Результат работы функции:

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

Все передаваемые функции аргументы должны быть текстовыми. Результатом является число.

Фактически эта функция заменила предыдущую, поскольку я отказался от одноуровневого инвентаря. Следует отметить значения "first" и "last" для второго аргумента. Если выставлено значение first, или пустое, функция начнёт поиск с нулевого элемента массива. Если выставлено 'last', функция начнёт поиск с последнего элемента массива.

Функция использует 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 - все результирующие строки будут приведены к нижнему регистру. Не влияет на разделители.
Примеры использования:

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

$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]=желать

На момент публикации этой функции в библиотеке была исправлена конструкция функции, не позволявшая использовать в качестве разделителя апостроф. Однако пришлось ввести временную переменную $easy_math_copy_array. Избегайте использования этой переменной в своих играх одновременно с использованием библиотеки.

#widetrim#

 ↑ Наверх 

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

$args[0] - обрабатываемый текст
$args[1] - управляющее слово: [trim].

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

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

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

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

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

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

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

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

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

#str.thin#

 ↑ Наверх 

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

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

Примеры:

$func('#str.thin#','профессура')="п р о ф е с с у р а"
$func('#str.thin#','профессура',1,'|')="п|р|о|ф|е|с|с|у|р|а"
$func('#str.thin#','профессура',3,'|')="про|фес|сур|а"
$func('#str.thin#','профессура',3,'|','[left]')="|про|фес|сур|а"
$func('#str.thin#','профессура',2,'|','[right]')="пр|оф|ес|су|ра|"
$func('#str.thin#','профессура',1,'||','[left] [right]')="||п||р||о||ф||е||с||с||у||р||а||"




 ←   → 
  Aleks Versus'Easy Libraries'2013
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013


 
Copyright MyCorp © 2018
Конструктор сайтов - uCoz
aleksversus@mail.ru
lex666endless@rambler.ru
437337904
Наверх