Инструменты пользователя

Инструменты сайта


help:strings

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:strings [2013/10/19 11:58]
newsash
help:strings [2024/12/01 10:12] (текущий)
aleks_versus
Строка 1: Строка 1:
 [[help:​arrays|Назад:​ Массивы]] [[help:​arrays|Назад:​ Массивы]]
  
-=====Строки=====+====== Строки ​======
  
-В QSP есть ​два ​типа данных:​ числовой ​((целочисленный)) и строковый.\\  +В **QSP** есть ​три ​типа данных:​ числовойстроковый ​и кортежи. В данном ​разделе мы рассмотрим строковый тип данных ​и способы работы с ним.
-Строковый ​тип данных отличается тем, что в начале названия строковой переменной или массива должен быть символ '​**$**'​.\\  +
-Рекомендуется к названиям всех функций,​ возвращающих ​строковые значения, тоже приписывать символ '​**$**'​ для улучшения читаемости кода. +
-====Константы====+
  
-Если с числовыми константами в QSP всё просто (просто записывается числом,​ например, ​4593), то со строковыми есть несколько нюансов:​ +Если мы присваиваем ​строковое значение переменной,​ перед именем такой переменной обязательно нужно ставить символ ''​%%$%%''​. То же самое, если мы //​извлекаем// строковое значение из переменной. 
-  * Текстовая константа берётся с двух сторон в кавычки + 
-    * Кавычки могут быть двух видов: апострофы ​**' '** и прямые кавычки ​**" "** +<sxh qsp> 
-    * Если нужно в константу включить кавычки того же вида, нужно написать ​кавычки два раза подряд:<​sxh qsp> +$text = "​Зелёное яблоко" &! помещаем строковое значение в переменную 
-*PL 'Byte Soft''​s "​QSP"'​ +*pl $text &! выводим на экран значение ​строковой переменной 
-*PL "Byte Soft's ""​QSP"""​ +</​sxh>​ 
-!Byte Soft's "​QSP"​+ 
 +Также рекомендуется к названиям всех функций, возвращающих ​строковые значения, ​приписывать символ ''​%%$%%''​ для улучшения читаемости кода. 
 + 
 +<sxh qsp> 
 +$max('​Петя','​Вася','​Лёша','​Дима'​) 
 +$text = $str(453+111) 
 +$name = $input('​Введите имя:'​) 
 +</​sxh>​ 
 + 
 +===== Константы ===== 
 + 
 +Под константой следует понимать одно конкретное ​значение. Например, число ''​%%1441%%''​ — это числовая константа,​ а строка ''​%%"​Зелёные яблоки"​%%''​ — это строковая константа. 
 + 
 +Если с числовыми константами в **QSP** всё просто (записываем числоиспользуя набор цифр; ​например, ​''​%%4953%%''​), то со строковыми есть несколько нюансов:​ 
 + 
 +  * Строковая константа берётся с двух сторон в кавычки ​(обрамляется кавычками). 
 +    * Кавычки могут быть двух видов: апострофы ''​%%' '​%%'' ​и прямые кавычки ​''​%%" "%%''​. 
 +    * Если нужно в константу включить кавычки того же вида, нужно написать их два раза подряд ​(//​экранировать через дублирование//​): <sxh qsp> 
 +    *PL 'Byte Soft''​s "​QSP"'​ 
 +    *PL "Byte Soft's ""​QSP"""​ 
 +    !Byte Soft's "​QSP"​
 </​sxh>​ </​sxh>​
-  * Для текстовых констант сохраняются переносы строк и отступы:<​sxh qsp>+  * В строковых константах сохраняются переносы строк и отступы:<​sxh qsp>
 '​Данный текст '​Данный текст
 будет расположен на будет расположен на
Строка 22: Строка 39:
  
 $a='И этот $a='И этот
-текст+    ​текст ​   
 также'​ также'​
  
 a=2 & act '​Многострочное a=2 & act '​Многострочное
-название':​gt '​next'​+название':​ gt '​next'​
 </​sxh>​ </​sxh>​
-    ​При выводе ​ошибок многострочная ​(префоматированнаятекстовая ​константа считается за одну ​строку.+  ​Если ошибка допущена внутри строковой константы,​ то вся ​многострочная ​константа будет считаться одной строкой при ​выводе ошибки.<​sxh qsp> 
 +! ошибка указывается во второй ​строке 
 +*pl "Хотя на самом 
 +деле ошибка 
 +в четвёртой <<"​строке">>"</​sxh>​
   * Текстовые константы и значения переменных можно объединять двумя способами:​   * Текстовые константы и значения переменных можно объединять двумя способами:​
-    * С помощью оператора конкатенации **&**. Выражение нужно брать в скобки,​ т.к. ​оператор **&​** ​также разделяет команды: <sxh qsp>  +    * С помощью оператора конкатенации ​''​**&**''​. Выражение нужно брать в скобки,​ т.к. ​существует ещё разделитель команд ​''​**&​**''​:<sxh qsp> 
-$res = ('​x='​ & x & ' y=' & y) &Результат 'x=5 y=6' +В переменную $res запишется 'x=5 y=6': 
-$res = '​x='​ & x &!'Результат '​x=',​ а '​5'​ выведется +$res = ('​x='​ & x & ' ​y=' & y) 
-в основное окно описания.'+! В переменную $res запишется  ​'​x=',​ 
 +а '​5'​ выведется в основное окно описания
 +$res = 'x=' & x
 </​sxh>​ </​sxh>​
-    * С помощью оператора сложения **+**: <sxh qsp> +    * С помощью оператора сложения ​''​**+**''​: <sxh qsp> 
-$res = '​x='​ + x + ' y=' + y &! Результат 'x=5 y=6'+! Результат 'x=5 y=6'
 +$res = '​x='​ + x + ' y=' + y
 </​sxh>​ </​sxh>​
       * Следует соблюдать осторожность,​ если одно из слагаемых числового типа: <sxh qsp>       * Следует соблюдать осторожность,​ если одно из слагаемых числового типа: <sxh qsp>
Строка 44: Строка 68:
 </​sxh>​ </​sxh>​
  
-====Подвыражения====+==== Экранирование ====
  
-В строковые ​константыв базовые описания локаций и названия ​базовых действий существует возможность ​вставлять значения выражений. Такие ​"подвыражения" должны находиться между двойных угловых скобок: "​**%%<<​%%**" ​и "**%%>>​%%**"до и после которых может идти любой текст, включая подобные ​"подвыражения".+Чуть выше были приведены ​два случая экранирования ​кавычек в строке. Экранирование становится особенно важным, когда мы имеем дело с более сложным вложением кавычек. Например, при работе с HTML-разметкой. 
 + 
 +Для более полного понимания того, как ​можно экранировать кавычки в **QSP**, рассмотрим гиперссылку, в которую встроен переход на локацию. Вот как эта ссылка будет выглядеть на экране при отключенном режиме распознавания HTML: 
 + 
 +<sxh html> 
 +<a href="​EXEC:​ goto '​Верстак' " class="​plain">​Верстак</​a>​ 
 +</​sxh>​ 
 + 
 +Если мы заключим нашу ссылку в одинарные ​кавычки,​ нам ​придётся экранировать ​одинарные кавычки внутри атрибута **href**:
  
 <sxh qsp> <sxh qsp>
-pl 'i='+str(i) +*p '<a href="EXEC: goto 'ерстак'' ​" class="​plain">​Верстак</a>' 
-!эквивалентно +</​sxh>​
-pl 'i=<<i>>'+
  
 +Если мы заключим нашу ссылку в двойные кавычки,​ то нам придётся экранировать непосредственно границы атрибутов от кода **QSP**:
 +
 +<sxh qsp>
 +*p "<a href=""​EXEC:​ goto '​Верстак'​ ""​ class=""​plain"">​Верстак</​a>"​
 +</​sxh>​
 +
 +Есть способ записи,​ когда нам не приходится экранировать кавычки вообще. Мы просто заключаем ссылку в фигурные скобки (не рекомендуется):​
 +
 +<sxh qsp>
 +*p {<a href="​EXEC:​ goto '​Верстак'​ " class="​plain">​Верстак</​a>​}
 +</​sxh>​
 +
 +Может так же пригодиться способ,​ позволяющий создавать глубокие уровни вложенности кавычек друг в друга и обходиться без экранирования:​
 +
 +<sxh qsp>
 +*p '<a href="​EXEC:'​ + " goto '​Верстак'​ " + ' " class="​plain">​Верстак</​a>'​
 +</​sxh>​
 +
 +===== Сравнение строк =====
 +
 +Точно так же, как и числовые значения,​ мы можем сравнивать строковые значения. При этом операции сравнения будут возвращать **1**, если равенство верно, и **0**, если равенство неверно.
 +
 +<sxh qsp>
 +if '​abc'​='​abc':​ '​Условие выполнено'​
 +*pl ('​abc'​='​abc'​) & ! увидим на экране единицу
 +*pl ('​abc'>'​ab'​) & ! увидим на экране единицу
 +*pl ('​abc'<'​abc'​) & ! увидим на экране ноль
 +</​sxh>​
 +
 +Строки сравниваются посимвольно,​ начиная с крайнего левого символа.
 +
 +<sxh qsp>
 +! это не валидный код qsp
 +! а табличка сравнения строковых констант
 +'​ac'​ = '​ac'​
 +'​bc'​ > '​ac' ​ &! '​b'​ > '​a'​
 +'​ac'​ > '​ab' ​ &! '​c'​ > '​b'​
 +'​b' ​ > '​ab' ​ &! '​b'​ > '​a'​
 +'​ab'​ > '​a' ​  &​! '​b'​ > ''​
 +</​sxh>​
 +
 +===== Подвыражения =====
 +
 +**QSP** позволяет вставлять значения различных выражений в строковые константы,​ а так же в базовые описания локаций и названия базовых действий. Для этого используются специальные конструкции из двойных угловых скобок:​ ''​%%<<​%%''​ и ''​%%>>​%%''​. Выражения,​ помещённые в такие двойные угловые скобки,​ называются **подвыражениями**,​ или **вложенными выражениями**.
 +
 +Примеры:​
 +
 +<sxh qsp>
 число_гоблинов=5 число_гоблинов=5
 '​Тебя окружили <<​число_гоблинов>>​ гоблинов!'​ '​Тебя окружили <<​число_гоблинов>>​ гоблинов!'​
 +! на экране будет строка:​
 +! Тебя окружили 5 гоблинов!
 +</​sxh>​
  
-pl '​Вас зовут <<$PlayerName>>, вы находитесь в <<​$curloc>>​.'​+<sxh qsp> 
 +pl '​Вас зовут <<$playerName>>, вы находитесь в <<​$curloc>>​.'​ 
 +</​sxh>​
  
 +Когда плеер встречает подобное подвыражение,​ он это подвыражение **раскрывает**. Это значит,​ что плеер вычисляет значение выражения в двойных угловых скобках,​ а затем подставляет полученное значение на место этого самого подвыражения.
 +
 +Другие примеры:​
 +
 +<sxh qsp>
 +pl '​i='​+$str(i)
 +!эквивалентно
 +pl '​i=<<​i>>'​
 +</​sxh>​
 +
 +Подвыражения можно вкладывать друг в друга. Здесь очень важно соблюдать чередование кавычек,​ если вы это делаете:​
 +
 +<sxh qsp>
 !Вложенные подвыражения:​ !Вложенные подвыражения:​
 pl val('<<​val("<<​i>>"​)>><<​j>>'​) pl val('<<​val("<<​i>>"​)>><<​j>>'​)
-pl val('<<​str(val("<<​i>>"​))>>'​) +pl val('<<​$str(val("<<​i>>"​))>>'​) 
-!'​При использовании вложенных ​подвыражений +Здесь в подвыражения вкладываются другие 
-необходимо использовать вложенные строковые константы'+строковые константы ​с подвыражениями
 </​sxh>​ </​sxh>​
  
-Если нужно ​вывести ​последовательность ​"**%%<<​%%**" ​на экран, можно ​использовать два способа+Если нужно последовательность ​''​%%<<​%%''​ вывести ​на экран, или поместить в переменную, можно ​воспользоваться одним из этих ​способов: 
-  * Разбить '**%%<<​%%**' на '**<**'​+'​**<**': <sxh qsp>+ 
 +  * Разбить ''%%<<​%%'' на ''​%%'​<'​+'<​%%''​': <sxh qsp>
 $text = '<'​+'<​var>>'​ $text = '<'​+'<​var>>'​
 '​string <'​+'<​var>>'​ '​string <'​+'<​var>>'​
 </​sxh>​ </​sxh>​
-  * **DISABLESUBEX** - системная ​переменная,​ "​выключающая"​ подвыражения при неравенстве 0:<sxh qsp> +  * Использовать фигурные скобки: <sxh qsp> 
-DISABLESUBEX=1 +$text={<<​var>>​} 
-$text = '<<​var>>​' +*pl {string <<​var>>​}
-'string <<​var>>​+
-DISABLESUBEX=0+
 </​sxh>​ </​sxh>​
-====Функции==== 
  
-  ​* **LEN(**//[$стр]//**)** - возвращает ​длину строки //[$стр]//. +**Фигурные скобки** — это ещё один способ создавать строковые константы. При их использовании создаются точно такие же строковые ​константы, как и в случае с обычными кавычками, однако в таких константах не раскрываются подвыражения. К тому же текстразмещённый в фигурных скобках не подсвечивается ​непосредственно как текст различными редакторами (например, Quest Generator), а подсвечивается как обычный код. Поэтому фигурные скобки обычно используют для создания ​[[help:​dynamical|динамического кода]]. 
-  * **MID(**//​[$стр]//​**,​**//​[#​начало]//​**,​**//​[#​длина]//**)** - вырезает из строки ​//​[$стр]// ​строку, которая начинается с символа номер //[#начало]// и имеет длину //[#длина]//. Индексация символов в строке ведётся с 1. + 
-    * Параметр ​//[#длина]// может отсутствовать, при ​этом вырезается ​вся строка, начиная с символа ​//[#начало]//.  +<sxh qsp> 
-    //Примеры://<sxh qsp+*pl { 
-$MID('​abcd',​ 1, 2) &! '​ab'​ +    Это текст в фигурных скобках,​ 
-$MID('​abcd',​ 2, 3) &'​bcd'​ +    здесь не раскрываются ​<<​подвыражения>​
-$MID('​abcd',​ 2)    &'​bcd'​+} 
 +dynamic { 
 +    ​обычно в фигурных 
 +    ! скобках размещают 
 +    *pl "​Код для оператора DYNAMIC"​ 
 +}
 </​sxh>​ </​sxh>​
-  ​* **UCASE(**//[$стр]//**)** - возвращает строку больших букв, полученную изменением регистра букв исходной строки ​//[$стр]//. <sxh qsp>​$UCASE('​TexT#'​) &! '​TEXT#'</​sxh>​ + 
-  * **LCASE(**//[$стр]//**)** - возвращает строку маленьких букв, полученную изменением регистра букв исходной строки ​//[$стр]//. <sxh qsp>​$LCASE('​TExT#'​) &! '​text#'</​sxh>​ +===== Функции ===== 
-  * **TRIM(**//[$стр]//**)** - удаляет прилегающие пробелы и символы табуляции из //[$стр]// и возвращает полученную строку. <sxh qsp>​$TRIM('​ TRIM TEST ') &! 'TRIM TEST'</​sxh>​ + 
-  * **REPLACE(**//[$стр]//**,**//[$поиск]//**,**//[$замена]//**)** - заменяет в строке ​//[$стр]// все вхождения строки ​//[$поиск]// строкой ​//[$замена]//+  ​''​%%LEN([$стр])%%''​ - возвращает длину строки ''​%%[$стр]%%''​. <sxh qsp> 
-    * Параметр ​//[$замена]// может отсутствовать ​и принимается равным пустой строке. +*pl len('​Зелёные яблоки'​) &! на экране будет число 14 
-    * //Примеры:​//<sxh qsp>+</​sxh>​ 
 +  ​''​**$MID(**[$стр],​[#​начало],​[#​длина]**)**''​ - вырезает из строки ''​%%[$стр]%%''​ строку,​ которая начинается с символа номер ''​%%[#​начало]%%''​ и имеет длину ''​%%[#​длина]%%''​. Нумерация символов в строке ведётся с **1**. 
 +    * Параметр ''​%%[#​длина]%%''​ может отсутствовать,​ при этом вырезается вся строка,​ начиная с символа ''​%%[#​начало]%%''​. 
 +    * Если ''​%%[#​начало]%%''​ превышает длину строки,​ функция возвращает пустую строку. 
 +    * Примеры:​ <sxh qsp> 
 + ​$MID('​abcd',​ 1, 2) &! '​ab'​ 
 + ​$MID('​abcd',​ 2, 3) &! '​bcd'​ 
 + ​$MID('​abcd',​ 2)    &! '​bcd'​ 
 + ​$mid('​abcd',​5) &! ''​ (пустая строка) 
 +</​sxh>​ 
 +  * ''​%%$UCASE([$стр])%%'' ​- возвращает строку больших букв, полученную изменением регистра букв исходной строки ​''​%%[$стр]%%''​. <sxh qsp> 
 +$UCASE('​TexT#'​) &! '​TEXT#'​ 
 +</​sxh>​ 
 +  * ''​%%$LCASE([$стр])%%'' ​- возвращает строку маленьких букв, полученную изменением регистра букв исходной строки ​''​%%[$стр]%%''​. <sxh qsp> 
 +$LCASE('​TExT#'​) &! '​text#'​ 
 +</​sxh>​ 
 +  * ''​%%$TRIM([$стр])%%'' ​- удаляет прилегающие пробелы и символы табуляции из ''​%%[$стр]%%'' ​и возвращает полученную строку. <sxh qsp> 
 +$TRIM('​ TRIM TEST ') &! 'TRIM TEST' 
 +</​sxh>​ 
 +  * ''​**$REPLACE(**[$стр],​[$поиск],​[$замена],​[#​количество_замен]**)**'' ​- заменяет в строке ​''​%%[$стр]%%''​ несколько ​вхождений строки ​''​%%[$поиск]%%'' ​строкой ​''​%%[$замена]%%''​. Замена производится слева-направо и только для неперескающихся вхождений
 +    * Параметр ​''​[#​количество_замен]''​ показывает,​ сколько вхождений должно быть заменено. Если параметр не указан,​ производится замена всех вхождений. 
 +    * Параметр ''​%%[$замена]%%'' ​может отсутствовать, тогда он принимается равным пустой строке. 
 +    * Примеры:​ <sxh qsp>
 $REPLACE('​test',​ '​12',​ '​4'​) &! '​test'​ $REPLACE('​test',​ '​12',​ '​4'​) &! '​test'​
 $REPLACE('​test',​ '​e',​ '​s'​) ​ &! '​tsst'​ $REPLACE('​test',​ '​e',​ '​s'​) ​ &! '​tsst'​
 $REPLACE('​test',​ '​t',​ '​34'​) &! '​34es34'​ $REPLACE('​test',​ '​t',​ '​34'​) &! '​34es34'​
-$REPLACE('​test',​ '​t'​) ​      ​&! '​es'​+$REPLACE('​test',​ '​t'​) &! 'es
 + 
 +$REPLACE('​test',​ '​t',​ '​qu',​ 1) &! '​quest'​ 
 +$REPLACE('​test my test', '​t',​ '​q',​ 3) &! 'qesq my qest'
 </​sxh>​ </​sxh>​
-  * **INSTR(**//​[#​начало]//​**,​**//​[$строка]//**,**//[$поиск]//**)** - возвращает номер позиции символа,​ с которого начинается вхождение строки ​//[$поиск]// в строку ​//[$строка]// (или 0, если ​такой строки нет). Поиск начинается с символа номер ​//[#​начало]//+  * ''​%%INSTR([$строка],​[$поиск],​[#​начало])%%'' ​- возвращает номер позиции символа,​ с которого начинается вхождение строки ​''​%%[$поиск]%%'' ​в строку ​''​%%[$строка]%%'' ​(или ​**0**, если ​вхождения нет). Поиск начинается с символа номер ​''​%%[#​начало]%%''​
-    * Параметр ​//[#​начало]// может отсутствовать,​ при этом он принимается равным **1**. +    * Параметр ​''​%%[#​начало]%%'' ​может отсутствовать,​ при этом он принимается равным **1**. 
-    * //Примеры:​//<sxh qsp> +    * Примеры:​ 
-INSTR(1,'​ABCDefgh','​BC'​) &! 2 +<sxh qsp> 
-INSTR(1,'​ABCDefgh','​Be'​) &! 0+INSTR('​ABCDefgh','​BC'​,1) &! 2 
 +INSTR('​ABCDefgh','​Be'​,1) &! 0
 INSTR('​abcdef','​abc'​) ​   &! 1 INSTR('​abcdef','​abc'​) ​   &! 1
 </​sxh>​ </​sxh>​
-  * **ISNUM(**//[$строка]//**)** - функция проверяет,​ является ли строка [$строка] числом. Функция возвращает 0 (ложь) или ​-1 (истина). <sxh qsp> +  * ''​%%ISNUM([$строка])%%'' ​- функция проверяет,​ является ли строка ​''​%%[$строка]%%'' ​числом. Функция возвращает ​''​%%0%%'' ​(ложь) или ​''​%%1%%'' ​(истина). <sxh qsp> 
-ISNUM('​9999 ') &​! ​-+ISNUM('​ 9999 ') &! 1 
-ISNUM('​ -888') &​! ​-+ISNUM('​ -888'​) ​ &! 1 
-ISNUM('​777a6'​) &! 0+ISNUM('​777a6'​) ​ &! 0 
 +ISNUM(''​) 
 +  &! 0, т.к. пустая строка не содержит числа
 </​sxh>​ </​sxh>​
-  * **VAL(**//[$стр]//**)** - переводит строку цифр ​//[$стр]// в соответствующее число. При ошибке возвращается 0.<sxh qsp>​яблоки = VAL($яблоки)</​sxh>​ +  * ''​%%VAL([$стр])%%'' ​- переводит строку цифр ​''​%%[$стр]%%'' ​в соответствующее число. При ошибке возвращает ​''​%%0%%''​. <sxh qsp> 
-  * **STR(**//​[#​число]//​**)** - переводит число (числовое выражение) в соответствующую строку. <sxh qsp>PL STR(56)</​sxh>​ +яблоки = VAL($яблоки) 
- +val('123') & ! увидим 123 
-===Функции использующие регулярные выражения=== +val(''​) & ! увидим 0 
- +val('sand') & ! увидим ​0
-  * **STRCOMP(**//​[$строка]//​**,​**//​[$шаблон]//​**)** - проводит сравнение строки //​[$строка]//​ на соответствие регулярному выражению //​[$шаблон]//​. Возвращает -1, если строка соответствует шаблону,​ иначе 0. Сравни с функцией "​STRFIND"​. +
-  * **STRFIND(**//​[$строка]//​**,​**//​[$шаблон]//​**,​**//​[#​номер]//​**)** - возвращает подстроку в строке //​[$строка]//,​ соответствующую группе с номером //​[#​номер]//​ регулярного выражения //​[$шаблон]//​. +
-    * Если подстрока с указанным номером отсутствует,​ то возвращается пустая строка. +
-    * Нумерация групп подстрок начинается с 1. +
-    * Если параметр [#​номер] отсутствует или равен 0, то возвращаются подстрока,​ соответсвующая всему регулярному выражению. +
-    * //​Примеры://<​sxh qsp> +
-STRFIND(' ​идти к пещере', '​^(\S+)\s(\S+)\s(\S+)$',​ 0) &​! ​''​ +
-STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 1)  &! '​идти'​ +
-STRFIND('идти к пещере', '^(\S+)\s(\S+)\s(\S+)$',​ 2)  ​&​! ​'​к'​ +
-STRFIND('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 3)  &! '​пещере'​ +
-STRFIND('​идти к дому', '​к\s(\S+)', ​0) &! 'к дому' ​ +
-STRFIND('идти к дому', '​к\s(\S+)'​) ​   ​&​! ​'к дому+
-STRFIND('​идти к дому', '​к\s(\S+)',​ 1) &! '​дому'​ +
-STRFIND('​идти к своему дому',​ '​к\s(\S+)',​ 1) &! '​своему'​+
 </​sxh>​ </​sxh>​
-  * **STRPOS(**//[$строка]//​**,​**//​[$шаблон]//​**,​**//​[#​номер]//​**)** возвращает позицию символа,​ с которого начинается ​вхождение подстроки в строку //​[$строка]//,​ соответствующей группе с номером //​[#​номер]//​ регулярного выражения //​[$шаблон]//​. +  * ''​%%$STR([#число])%%'' ​переводит ​число ​(числовое выражение) в соответствующую строку. <sxh qsp> 
-    * Если подстрока с указанным номером отсутствует,​ то возвращается 0. +PL $STR(56)
-    * Нумерация групп подстрок начинается с 1. +
-    * Если параметр //[#номер]// отсутствует или равен 0, то возвращается позиция символа, с которого начинается вхождение ​подстроки, ​соответствующей всему ​регулярному выражению. +
-    * //​Примеры://​<sxh qsp> +
-STRPOS('​ идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$', 0) &! 0 +
-STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 1)  &! 1 +
-STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 2)  &! 6 +
-STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)\s(\S+)$',​ 3)  &! 8 +
-STRPOS('​идти к пещере',​ '​^(\S+)\s(\S+)(\s(\S+))?​$',​ 4) &! 8 +
-STRPOS('​идти к дому',​ '​к\s(\S+)',​ 0) &! 6 +
-STRPOS('​идти к дому',​ '​к\s(\S+)'​) ​   &! 6 +
-STRPOS('​идти к дому',​ '​к\s(\S+)',​ 1) &! 8 +
-STRPOS('​идти к своему дому',​ '​к\s(\S+)',​ 1&! 8+
 </​sxh>​ </​sxh>​
  
-----+===== Операторы ===== 
 + 
 +  * ''​%%SCANSTR [$имя_массива],​ [$текст_для_разбора],​ [$регэксп],​ [#​номер_группы]%%''​ — оператор ищет в строке ''​%%[$текст_для_разбора]%%''​ непересекающиеся фрагменты,​ соответствующие регулярному выражению ''​%%[$регэксп]%%'',​ и помещает их в массив ''​%%[$имя_массива]%%''​. Если параметр ''​%%[#​номер_группы]%%''​ указан и отличается от нуля, в массив помещается не весь фрагмент целиком,​ а лишь та его часть, которая соответствует группе с указанным номером. 
 +    * Подробное описание оператора и примеры использования в разделе "​[[help:​arrays|массивы]]"​. 
 [[help:​regexp|Вперёд:​ Регулярные выражения]] [[help:​regexp|Вперёд:​ Регулярные выражения]]
 +
help/strings.1382183905.txt.gz · Последние изменения: 2013/10/19 15:58 (внешнее изменение)