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

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


help:strings

Различия

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

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

Both sides previous revision Предыдущая версия
Следущая версия
Предыдущая версия
help:strings [2013/10/19 10:08]
newsash
help:strings [2025/09/28 13:41] (текущий)
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>​
  
-====Подвыражения==== +==== Экранирование ​====
-10) Для подвыражений,​ если нужно вывести последовательность "<<"​ на экран, ​используйте системную переменную "​DISABLESUBEX"​. К примеру:​+
  
-<sxh qsp> +Чуть выше были приведены два случая экранирования кавычек в строке. Экранирование становится особенно важным,​ когда мы имеем дело с более сложным вложением кавычек. Например,​ при работе с HTML-разметкой.
-DISABLESUBEX=1 +
-$text = '<<​var>>'​ +
-'​string <<​var>>'​ +
-DISABLESUBEX=0 +
-</​sxh>​+
  
-Возможна ЛЮБАЯ комбинация констант, ​переменных, функций. +Для более полного понимания того, как можно ​экранировать кавычки в **QSP**, рассмотрим гиперссылкув которую встроен переход на локацию. Вот ​как эта ссылка ​будет выглядеть на экране при отключенном режиме распознавания ​HTML:
-При вычислении значений выражений движок (по возможности) ​конвертирует типы данных автоматически. +
-В строковые константы, в базовые описания локаций и названия базовых действий ​существует возможность вставлять значения выражений. +
-Такие "​подвыражения"​ должны находиться между двойных угловых скобок: "<<"​ и ">>"​до и после ​которых может идти любой текст, включая подобные "​подвыражения"​. +
-Например, вместо оператора +
-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 html> 
 +<a href="​EXEC:​ goto 'Верстак' ​" ​class="plain">​Верстак</a> 
 +</sxh>
  
-LEN([$выражение]) - возвращает длину строки [$выражение].+Если мы заключим ​нашу ссылку в одинарные кавычки, нам придётся экранировать одинарные ​кавычки внутри атрибута **href**:
  
 +<sxh qsp>
 +*p '<a href="​EXEC:​ goto ''​Верстак''​ " class="​plain">​Верстак</​a>'​
 +</​sxh>​
  
 +Если мы заключим нашу ссылку в двойные кавычки,​ то нам придётся экранировать непосредственно границы атрибутов от кода **QSP**:
  
-MID([$выражение],[#выражение 1],​[#​выражение 2]) - вырезает из строки [$выражение] строку, которая начинается с символа номер [#​выражение 1] и имеет длину [#выражение 2]. Индексация символов в строке ведётся с 1.+<sxh qsp> 
 +*p "<a href=""​EXEC:​ goto 'Верстак' ""​ class=""​plain"">​Верстак</​a>"​ 
 +</​sxh>​
  
-Параметр [#выражение 2] может отсутствовать, при этом ​вырезается вся ​строка, начиная с символа [#выражение ​1]. Примеры:+Есть способ записи, когда нам не приходится экранировать ​кавычки вообще. Мы просто ​заключаем ссылку в фигурные скобки е рекомендуется):
  
 +<sxh qsp>
 +*p {<a href="​EXEC:​ goto '​Верстак'​ " class="​plain">​Верстак</​a>​}
 +</​sxh>​
  
 +Может так же пригодиться способ,​ позволяющий создавать глубокие уровни вложенности кавычек друг в друга и обходиться без экранирования:​
  
-MID('abcd', 1, 2) равно ​'ab'+<sxh qsp> 
 +*p '<a href="​EXEC:​' ​+ " goto 'Верстак' ​" + ' " class="​plain">​Верстак</​a>​' 
 +</​sxh>​
  
-MID('​abcd',​ 2, 3) равно ​'​bcd'​+===== Сравнение строк =====
  
-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>​
  
 +Если строки сравниваются с числами,​ плеер пытается привести строку к числу и затем сравнить два числа. Если привести строку к числу не получается,​ плеер приводит число к строке и сравнивает две строки. Поэтому результаты могут отличаться в разных случаях:​
  
 +<sxh qsp>
 +! это не валидный код QSP
 +! а табличка сравнения
 +3 < '​12'​ &! '​12'​ приводится к числу, и 12 > 3
 +'​3'​ > '​12'​ &! сравниваются две строки,​ а '​3'​ > '​1'​
 +3 > '​12a'​ &! '​12a'​ не приводится к числу, сравниваются строки
 +</​sxh>​
  
-UCASE('​TexT#'​) ​равно '​TEXT#'​+===== Подвыражения =====
  
 +**QSP** позволяет вставлять значения различных выражений в строковые константы,​ а так же в базовые описания локаций и названия базовых действий. Для этого используются специальные конструкции из двойных угловых скобок:​ ''​%%<<​%%''​ и ''​%%>>​%%''​. Выражения,​ помещённые в такие двойные угловые скобки,​ называются **подвыражениями**,​ или **вложенными выражениями**.
  
 +Примеры:​
  
-LCASE([$выражение]) - возвращает строку ​маленьких букв, полученную ​изменением ​регистра ​букв исходной ​строки [$выражение]. Пример:+<sxh qsp> 
 +число_гоблинов=5 
 +ебя окружили <<​число_гоблинов>> гоблинов!'​ 
 +на экране будет строка
 +! Тебя окружили 5 гоблинов! 
 +</​sxh>​
  
 +<sxh qsp>
 +pl '​Вас зовут <<​$playerName>>,​ вы находитесь в <<​$curloc>>​.'​
 +</​sxh>​
  
 +Когда плеер встречает подобное подвыражение,​ он это подвыражение **раскрывает**. Это значит,​ что плеер вычисляет значение выражения в двойных угловых скобках,​ а затем подставляет полученное значение на место этого самого подвыражения.
  
-LCASE('​TExT#'​) ​равно '​text#'​+Другие примеры:​
  
 +<sxh qsp>
 +pl '​i='​+$str(i)
 +!эквивалентно
 +pl '​i=<<​i>>'​
 +</​sxh>​
  
 +Подвыражения можно вкладывать друг в друга. Здесь очень важно соблюдать чередование кавычек,​ если вы это делаете:​
  
-TRIM([$выражение]- удаляет прилегающие пробелы и символы табуляции из [$выражение]. Затем ​возвращает полученную ​строку. Пример:+<sxh qsp> 
 +!Вложенные подвыражения: 
 +pl val('<<​val("<<​i>>"​)>><<​j>>'​) 
 +pl val('<<​$str(val("<<​i>>"​))>>'​) 
 +! Здесь в подвыражения вкладываются другие 
 +строковые константы с подвыражениями 
 +</​sxh>​
  
 +Если нужно последовательность ''​%%<<​%%''​ вывести на экран, или поместить в переменную,​ можно воспользоваться одним из этих способов:​
  
 +  * Разбить ''​%%<<​%%''​ на ''​%%'<'​+'<​%%''':​ <sxh qsp>
 +$text = '<'​+'<​var>>'​
 +'​string <'​+'<​var>>'​
 +</​sxh>​
 +  * Использовать фигурные скобки:​ <sxh qsp>
 +$text={<<​var>>​}
 +*pl {string <<​var>>​}
 +</​sxh>​
  
-TRIM(' TRIM TEST '​) ​равно ​'TRIM TEST'+**Фигурные скобки** — это ещё один способ создавать строковые константы. При их использовании создаются точно такие же строковые константы,​ как и в случае с обычными кавычками,​ однако в таких константах не раскрываются подвыражения. К тому же текст, размещённый в фигурных скобках не подсвечивается непосредственно как текст различными редакторами ​(например, Quest Generator), ​а подсвечивается как обычный код. Поэтому фигурные скобки обычно используют для создания [[help:​dynamical|динамического кода]].
  
 +<sxh qsp>
 +*pl {
 +    Это текст в фигурных скобках,​
 +    здесь не раскрываются <<​подвыражения>>​
 +}
 +dynamic {
 +    ! обычно в фигурных
 +    ! скобках размещают
 +    *pl "​Код для оператора DYNAMIC"​
 +}
 +</​sxh>​
  
 +===== Функции =====
  
-REPLACE([$выражение 1],[$выражение ​2],[$выражение ​3]) - заменяет в строке [$выражение 1] все вхождения строки [$выражение ​2] строкой [$выражение ​3]. Если [$выражение ​3] отсутствует или указана пустая строка, то удаляет в исходной строке все вхождения искомой строки. Примеры:​+  * ''​%%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>​
  
 +===== Операторы =====
  
-REPLACE('test', '​12',​ '​4'​) равно '​test'​ +  * ''​%%SCANSTR ​[$имя_массива], [$текст_для_разбора][$регэксп], [#номерруппы]%%'' ​— оператор ищет в строке ​''​%%[$текстля_разбора]%%''​ непересекающиеся ​фрагменты, соответствующие регулярному выражению ​''​%%[$регэксп]%%''​, и помещает ​их в массив ''​%%[мяассива]%%''​. Если параметр ​''​%%[#​номер_группы]%%''​ указан и отличается от нуля, в массив ​помещается ​не весь фрагмент ​целиком,​ а лишь та его часть, которая соответствует группе с указанным номером. 
- +    * Подробное описание оператора ​и примеры ​использования в разделе ​"​[[help:arrays|массивы]]"​.
-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'​) равно +
- +
-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) = 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+
  
-STRPOS('​идти к дому',​ '​к\s(\S+)',​ 1) = 8+[[help:​regexp|Вперёд: Регулярные выражения]]
  
-STRPOS('​идти к своему дому',​ '​к\s(\S+)',​ 1) = 8 
help/strings.1382177281.txt.gz · Последние изменения: 2013/10/19 14:08 (внешнее изменение)