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

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


help:strings

Различия

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

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

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