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

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


help:strings

Различия

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

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

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