Модуль: Строка ( редактировать | говорить | история | ссылки | смотреть | журналы )
Этот модуль предназначен для обеспечения доступа к основным строковым функциям.
Большинство функций, представленных здесь, можно вызывать с именованными параметрами, безымянными параметрами или их сочетанием. Если используются именованные параметры, Mediawiki автоматически удалит любые начальные или конечные пробелы из параметра. В зависимости от предполагаемого использования может быть полезно сохранить или удалить такие пробелы.
Глобальные параметры
- ignore_errors
- Если установлено значение «истина» или 1, любое условие ошибки приведет к возврату пустой строки, а не сообщения об ошибке.
- error_category
- В случае возникновения ошибки указывает имя категории для включения в сообщение об ошибке. Категория по умолчанию - Категория: Ошибки, сообщаемые модулем String (3).
- no_category
- Если установлено значение «истина» или 1, в случае возникновения ошибки категория не добавляется.
Модульные тесты для этого модуля доступны по адресу Module: String / testcases .
len
Эта функция возвращает длину целевой строки.
Применение:
{{#invoke:String|len|target_string}}
ИЛИ ЖЕ
{{#invoke:String|len|s= target_string }}
Параметры:
- s
- Строка, длина которой сообщается.
Примеры:
{{#invoke:String|len| abcdefghi }}
→ 11{{#invoke:String|len|s= abcdefghi }}
→ 9
суб
Эта функция возвращает подстроку целевой строки по указанным включающим индексам с одним индексом.
Применение:
{{#invoke:String|sub|target_string|start_index|end_index}}
ИЛИ ЖЕ
{{#invoke:String|sub|s= target_string |i= start_index |j= end_index }}
Параметры:
- s
- Строка, возвращающая подмножество
- я
- Первый индекс возвращаемой подстроки, по умолчанию 1.
- j
- Последний индекс возвращаемой строки по умолчанию - последний символ.
Первому символу строки присваивается индекс 1. Если i или j является отрицательным значением, это интерпретируется так же, как выбор символа путем отсчета от конца строки. Следовательно, значение -1 совпадает с выбором последнего символа строки.
Если запрошенные индексы выходят за пределы диапазона данной строки, выдается сообщение об ошибке. Чтобы избежать сообщений об ошибках, используйте вместо этого {{ #invoke: ustring | sub}}.
Примеры:
"{{#invoke:String|sub| abcdefghi }}"
→ "abcdefghi""{{#invoke:String|sub|s= abcdefghi }}"
→ "abcdefghi""{{#invoke:String|sub| abcdefghi | 3 }}"
→ "bcdefghi""{{#invoke:String|sub|s= abcdefghi |i= 3 }}"
→ "cdefghi""{{#invoke:String|sub| abcdefghi | 3 | 4 }}"
→ «до н.э.»"{{#invoke:String|sub|s= abcdefghi |i= 3 |j= 4 }}"
→ «cd»
субаренда
Эта функция реализует функции {{ str sub old }} и сохраняется для поддержки этих старых шаблонов. Он возвращает подстроку целевой строки, начиная с указанного индекса и указанной длины.
Применение:
{{#invoke:String|sublength|s= target_string |i= start_index |len= length }}
Параметры:
- s
- Строка
- я
- Начальный индекс возвращаемой подстроки. Первому символу строки присваивается индекс 0.
- len
- Длина возвращаемой строки по умолчанию - последний символ.
Примеры:
{{#invoke:String|sublength|s= abcdefghi }}
→ abcdefghi{{#invoke:String|sublength|s= abcdefghi |i= 3 }}
→ defghi{{#invoke:String|sublength|s= abcdefghi |i= 3 |len= 4 }}
→ defg
матч
Эта функция возвращает подстроку из исходной строки, которая соответствует указанному шаблону.
Применение:
{{#invoke:String|match|source_string|pattern_string|start_index|match_number|plain_flag|nomatch_output}}
ИЛИ ЖЕ
{{#invoke:String|match|s= source_string |pattern= pattern_string |start= start_index |match= match_number |plain= plain_flag |nomatch= nomatch_output }}
Параметры:
- s
- Строка для поиска
- шаблон
- Шаблон или строка, которую нужно найти в строке
- Начало
- Индекс в исходной строке для начала поиска. Первый символ строки имеет индекс 1. По умолчанию 1.
- матч
- В некоторых случаях в одной строке может быть несколько совпадений. Это указывает, какое совпадение нужно вернуть, где первое совпадение - match = 1. Если указано отрицательное число, то совпадение возвращается, отсчитывая от последнего совпадения. Следовательно, match = -1 - это то же самое, что запрос последнего совпадения. По умолчанию 1.
- простой
- Логический флаг, указывающий, что этот шаблон следует понимать как обычный текст, а не как шаблон Scribunto ustring ( удобное для Юникода регулярное выражение в стиле Lua ). По умолчанию значение ЛОЖЬ (до изменения: )
plain=true
- не совпадает
- Если совпадений не найдено, выведите значение «nomatch», а не ошибку.
- ignore_errors
- Если совпадение не найдено и ignore_errors = true, вывести пустую строку, а не ошибку.
Если match_number или start_index выходят за пределы диапазона для запрашиваемой строки, то эта функция генерирует ошибку. Также выдается ошибка, если совпадение не найдено. Если добавить параметр ignore_errors = true, ошибка будет подавлена, и при любой ошибке будет возвращена пустая строка.
Для получения информации о построении шаблонов Lua , формы регулярного выражения , см .:
- Шаблоны Scribunto
- Строковые шаблоны Юникода в Scribunto
Примеры:
{{#invoke:String|match| abc123def456 |%d+}}
→ 123{{#invoke:String|match|s= abc123def456 |pattern= %d+ }}
→ 123{{#invoke:String|match| abc123def456 |%d+|6}}
→ 23{{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 }}
→ 3{{#invoke:String|match|s= abc123def456 |pattern= %d+ |start= 6 |match= 2 }}
→ 456{{#invoke:String|match|s= abc123%d+ |pattern= %d+ }}
→ 123{{#invoke:String|match|s= abc123%d+ |pattern= %d+ |plain= true }}
→% d +{{#invoke:String|match|s= abc |pattern= %d }}
→ Ошибка строкового модуля: совпадение не найдено{{#invoke:String|match|s= abc |pattern= %d |nomatch= No numeric characters in string }}
→ В строке нет цифровых символов{{#invoke:String|match|s= abc |pattern= %d |ignore_errors= true }}
→{{#invoke:String|match|s= 0012001200 |pattern= 0*(%d*) }}
→ 1200–1200
позиция
Эта функция возвращает один символ из целевой строки в позиции pos.
Применение:
{{#invoke:String|pos|target_string|index_value}}
ИЛИ ЖЕ
{{#invoke:String|pos|target= target_string |pos= index_value }}
Параметры:
- цель
- Строка для поиска
- позиция
- Индекс возвращаемого символа
Первый символ имеет индексное значение 1.
Если кто-то запрашивает отрицательное значение, эта функция выберет символ путем обратного отсчета от конца строки. Другими словами, pos = -1 - это то же самое, что запрос последнего символа.
Запрошенное нулевое значение или значение, превышающее длину строки, возвращает ошибку.
Примеры:
{{#invoke:String|pos| abcdefghi | 4 }}
→ с{{#invoke:String|pos|target= abcdefghi |pos= 4 }}
→ d
str_find
Эта функция дублирует поведение {{ str_find }}, включая все его причуды. Это предусмотрено для поддержки существующих шаблонов, но НЕ РЕКОМЕНДУЕТСЯ для нового кода и шаблонов. Вместо этого в новом коде рекомендуется использовать функцию «найти».
Возвращает первый индекс в «источнике», совпадающий с «целевым». Индексирование начинается с 1, и функция возвращает -1, если «целевая» строка отсутствует в «источнике».
Важное примечание: если «целевая» строка пуста / отсутствует, эта функция возвращает значение «1», что обычно является неожиданным поведением и должно учитываться отдельно.
Применение:
{{#invoke:String|find|source_string|target_string}}
ИЛИ ЖЕ
{{#invoke:String|find|source= source_string |target= target_string }}
Параметры:
- источник
- Строка для поиска
- цель
- Строка для поиска в исходном коде
Примеры:
{{#invoke:String|str_find| abc123def }}
→ 1{{#invoke:String|str_find|source= abc123def }}
→ 1{{#invoke:String|str_find| abc123def |123}}
→ 5{{#invoke:String|str_find|source= abc123def |target= 123 }}
→ 4{{#invoke:String|str_find| abc123def |not}}
→ -1
найти
Эта функция позволяет искать целевую строку или шаблон в другой строке.
Применение:
{{#invoke:String|find|source_string|target_string|start_index|plain_flag}}
ИЛИ ЖЕ
{{#invoke:String|find|source= source_string |target= target_string |start= start_index |plain= plain_flag }}
Параметры:
- источник
- Строка для поиска
- цель
- Строка или шаблон для поиска в исходном коде
- Начало
- Индекс в исходной строке для начала поиска, по умолчанию 1
- простой
- Логический флаг, указывающий, что цель должна пониматься как обычный текст, а не как шаблон Scribunto ustring ( удобное для Юникода регулярное выражение в стиле Lua ); по умолчанию true
Эта функция возвращает первый индекс> = "start", где "target" можно найти в "source". Индексы отсчитываются от 1. Если «цель» не найдена, эта функция возвращает 0. Если «источник» или «цель» отсутствуют / пусты, эта функция также возвращает 0.
Эта функция должна быть безопасной для строк UTF-8.
Примеры:
{{#invoke:String|find|abc123def|12}}
→ 4
{{#invoke:String|find|source=abc123def|target=12}}
→ 4
{{#invoke:String|find|source=abc123def|target=pqr}}
→ 0
{{#invoke:String|find| abc123def |123}}
→ 5{{#invoke:String|find|source= abc123def |target= 123 }}
→ 4{{#invoke:String|find|source=abc123def|target=%d |start=3 |plain=false }}
→ 4
При использовании безымянных параметров предшествующие и конечные пробелы сохраняются и учитываются:
{{#invoke:String|find| abc123def |c|false}}
→ 5{{#invoke:String|find|source= abc123def |target=c|plain=false}}
→ 3{{#invoke:string|find|abc 123 def|%s|plain=false}}
→ 4
заменить (gsub)
Эта функция позволяет заменить целевую строку или шаблон в другой строке. Для программистов Lua: эта функция работает внутренне, вызывая string.gsub
.
Применение:
{{#invoke:String|replace|source_str|pattern_string|replace_string|replacement_count|plain_flag}}
ИЛИ ЖЕ
{{#invoke:String|replace|source= source_string |pattern= pattern_string |replace= replace_string |count= replacement_count |plain= plain_flag }}
Параметры:
- источник
- Строка для поиска
- шаблон
- Строка или шаблон для поиска в исходном коде
- заменять
- Текст замены
- считать
- Количество заменяемых экземпляров; по умолчанию все
- простой
- Логический флаг, указывающий, что этот шаблон следует понимать как обычный текст, а не как шаблон Scribunto ustring ( удобное для Юникода регулярное выражение в стиле Lua ); по умолчанию true
Примеры:
"{{#invoke:String|replace| abc123def456 |123|N}}"
→ «abcNdef456»"{{#invoke:String|replace|source= abc123def456 |pattern= 123 |replace= N }}"
→ «abcNdef456»"{{#invoke:String|replace| abc123def456 |%d+|N|1|false}}"
→ «abcNdef456»"{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= N |count=1 |plain= false }}"
→ «abcNdef456»"{{#invoke:String|replace|source= abc123def456 |pattern= %d+ |replace= N |plain= false }}"
→ «abcNdefN»{{#invoke:String|replace|source= 0012001200 |pattern= ^0* |plain= false }}
→ 1200–1200
представитель
Повторяет строку n раз. Простая функция для передачи string.rep шаблонам.
Применение:
{{#invoke:String|rep|source|count}}
Параметры:
- источник
- Строка для повторения
- считать
- Количество повторов.
Примеры:
"{{#invoke:String|rep|hello|3}}"
→ «привет, привет, привет»"{{#invoke:String|rep| hello | 3 }}"
→ «привет, привет, привет»
побег
В шаблоне Lua изменяет символ класса на буквальный символ . Например: в шаблоне символ .
ловит «любой символ»; escapePattern преобразует его в %.
, улавливая только буквальный символ ".".
Применение:
{{#invoke:String|escapePattern|pattern_string}}
Параметры:
- pattern_string
- Строка шаблона для экранирования
Примеры:
"{{#invoke:String|escapePattern|A.D.}}"
→ «A% .D%.»"{{#invoke:String|escapePattern|10%}}"
→ "10 %%"
считать
Подсчитывает, сколько раз данный шаблон появляется в аргументах, передаваемых этому модулю.
Применение:
{{#invoke:String|count|source_str|pattern_string|plain_flag}}
ИЛИ ЖЕ
{{#invoke:String|count|source= source_string |pattern= pattern_string|plain= plain_flag }}
Параметры:
- исходная_строка
- Строка для подсчета вхождений в
- шаблон
- Строка или шаблон для подсчета вхождений в исходном коде
- простой
- Логический флаг, указывающий, что этот шаблон следует понимать как обычный текст, а не как шаблон Scribunto ustring ( удобное для Юникода регулярное выражение в стиле Lua ); по умолчанию true
Примеры:
- Счетчик «а»:
"{{#invoke:String|count|aabbcc|a}}"
→ «2» - Счетчик «либо 'a', либо 'c'»:
"{{#invoke:String|count|aabbcc|[ac]|plain=false}}"
→ «4» - Счетчик «не а»:
"{{#invoke:String|count|aaabaaac|[^a]|plain=false}}"
→ «2» - Счетчик «начинается с« а »»:
"{{#invoke:String|count|aaabaaac|^a|plain=false}}"
→ «1»
присоединиться
Объединяет все строки, переданные в качестве аргументов, в одну строку, рассматривая первый аргумент как разделитель
Применение:
{{#invoke:String|join|separator|string1|string2|...}}
Параметры:
- разделитель
- Строка, разделяющая каждую соединяемую строку
- Обратите внимание, что начальные и конечные пробелы не удаляются из разделителя.
- строка1 / строка2 / ...
- Струны соединяются вместе
Примеры:
"{{#invoke:String|join|x|foo|bar|baz}}"
→ "fooxbarxbaz""{{#invoke:String|join||a|b|c|d|e|f|g}}"
→ «abcdefg»"{{#invoke:String|join|,|a|b|c|d|e|f|g}}"
→ «а, б, в, г, д, е, ж»"{{#invoke:String|join|, |a|b|c|d|e|f|g}}"
→ «а, б, в, г, д, е, ж»"{{#invoke:String|join| – |a|b|c|d|e|f|g}}"
→ «а - б - в - г - д - е - ж»
В предыдущем примере используется объект HTML & ndash; но символ Юникода тоже работает.
заканчивается
Применение:
{{#invoke:String|endswith|source_str|search_string}}
ИЛИ ЖЕ
{{#invoke:String|endswith|source= source_string |pattern= search_string}}
Возвращает «да», если исходная строка заканчивается строкой поиска. Используйте именованные параметры, чтобы обрезать строки перед использованием. Несмотря на название параметра, search_string не является шаблоном Lua, он интерпретируется буквально.
"{{#invoke:String|endswith|xxxyyy|y}}"
→ «да»"{{#invoke:String|endswith|xxxyyy|z}}"
→ ""
Смотрите также
- [[Этот модуль предназначен для обеспечения доступа к основным строковым функциям.Большинство функций, представленных здесь, можно вызывать с именованными параметрами,безымянные параметры или смесь. Если используются именованные параметры, Mediawiki будетавтоматически удаляет любые начальные или конечные пробелы из параметра.В зависимости от предполагаемого использования может быть выгодным либо консервировать, либоудалите такие пробелы.Глобальные параметры ignore_errors: если установлено значение true или 1, любое состояние ошибки приведет к возвращается пустая строка, а не сообщение об ошибке. error_category: при возникновении ошибки указывает имя категории длявключить в сообщение об ошибке. Категория по умолчанию - [Категория: ошибки, о которых сообщает строка модуля]. no_category: если установлено значение 'true' или 1, категория не будет добавлена в случае ошибки генерируется.Модульные тесты для этого модуля доступны по адресу Module: String / tests.]]local str = {}- [[lenЭта функция возвращает длину целевой строки.Применение:{{#invoke: String | len | target_string |}}ИЛИ ЖЕ{{#invoke: String | len | s = target_string}}Параметры s: строка, длина которой сообщаетсяПри вызове с использованием именованных параметров Mediawiki автоматически удаляет все ведущие илизавершающий пробел от целевой строки.]]функция ул . len ( рамка )local new_args = str . _getParameters ( frame . args , { 's' } )local s = new_args [ 's' ] или ""вернуть мв . ustring . len ( s )конец- [[субЭта функция возвращает подстроку целевой строки по указанным индексам.Применение:{{#invoke: String | sub | target_string | start_index | end_index}}ИЛИ ЖЕ{{#invoke: String | sub | s = target_string | i = start_index | j = end_index}}Параметры s: строка, возвращающая подмножество i: первый индекс возвращаемой подстроки, по умолчанию 1. j: последний индекс возвращаемой строки, по умолчанию последний символ.Первому символу строки присваивается индекс 1. Если i или j- отрицательное значение, оно интерпретируется так же, как выбор символа с помощьюотсчет от конца строки. Следовательно, значение -1 совпадает свыбор последнего символа строки.Если запрошенные индексы выходят за пределы заданной строки, возникает ошибка.сообщил.]]функция ул . суб ( рамка )local new_args = str . _getParameters ( frame . args , { 's' , 'i' , 'j' } )local s = new_args [ 's' ] или ""local i = tonumber ( new_args [ 'i' ] ) или 1local j = tonumber ( new_args [ 'j' ] ) или - 1локальный len = mw . ustring . len ( s )- Преобразование негативов для проверки диапазонаесли я < 0, тоя = len + я + 1конецесли j < 0, тоj = len + j + 1конецесли i > len или j > len или i < 1 или j < 1, товозврат ул . _error ( 'Индекс подмножества строк вне допустимого диапазона' )конецесли j < i, товозврат ул . _error ( 'Индексы подмножества строк вышли из строя' )конецвернуть мв . ustring . sub ( s , i , j )конец- [[Эта функция реализует функции {{str sub old}} и поддерживается в порядке.для поддержки этих старых шаблонов.]]функция ул . субдлина ( каркас )локальный я = ToNumber ( кадр . арг . я ) или 0локальная Len = ToNumber ( кадр . арг . LEN )вернуть мв . ustring . суб ( кадр . арг . с , я + 1 , Len и ( я + Len ) )конец- [[_матчЭта функция возвращает подстроку из исходной строки, которая соответствуетуказанный шаблон. Экспортируется для использования в других модуляхПрименение:strmatch = require ("Module: String") ._ matchsresult = strmatch (s, шаблон, начало, соответствие, простой, nomatch)Параметры s: строка для поиска шаблон: шаблон или строка для поиска в строкеначало: индекс в исходной строке для начала поиска. Первое Символ строки имеет индекс 1. По умолчанию 1. совпадение: в некоторых случаях может быть возможно сделать несколько совпадений на одномнить. Это указывает, какое совпадение вернуть, где первое совпадение match = 1. Если указано отрицательное число, возвращается совпадение.отсчет с последнего матча. Следовательно, match = -1 совпадает с запросомпоследний матч. По умолчанию 1. plain: флаг, указывающий на то, что шаблон следует понимать как простойтекст. По умолчанию - false. nomatch: Если совпадений не найдено, вывести значение «nomatch», а не ошибку.Для получения информации о построении шаблонов Lua, формы [регулярного выражения], см .:* http://www.lua.org/manual/5.1/manual.html#5.4.1* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns]]- Эта подпрограмма экспортируется для использования в других модулях.функция ул . _match ( s , шаблон , начало , match_index , plain_flag , nomatch )если s == '' товозврат ул . _error ( 'Целевая строка пуста' )конецесли шаблон == '' тогдавозврат ул . _error ( 'Строка шаблона пуста' )конецначать = ToNumber ( старт ) или 1если math.abs ( начало ) < 1 или math.abs ( начало ) > mw . ustring . len ( s ) тогдавозврат ул . _error ( 'Запрошенный запуск вне допустимого диапазона' )конецесли match_index == 0, товозврат ул . _error ( 'Индекс соответствия вне допустимого диапазона' )конецесли plain_flag, тошаблон = ул . _escapePattern ( шаблон )конецместный результатесли match_index == 1, то- Найти первое совпадение - это простой случайрезультат = mw . ustring . совпадение ( s , шаблон , начало )ещеесли start > 1, тоs = mw . ustring . sub ( s , начало )конецлокальный итератор = mw . ustring . gmatch ( s , шаблон )если match_index > 0, то- Поиск впереддля w в итераторе сделатьmatch_index = match_index - 1если match_index == 0, торезультат = wперерывконецконецеще- Обратный поискlocal result_table = {}местный счетчик = 1для w в итераторе сделатьтаблица_результатов [ количество ] = шcount = count + 1конецresult = result_table [ count + match_index ]конецконецесли результат == ноль, тоесли nomatch == nil, товозврат ул . _error ( 'Соответствие не найдено' )ещевернуться к номачуконецещевернуть результатконецконец- [[матчЭта функция возвращает подстроку из исходной строки, которая соответствуетуказанный шаблон.Применение:{{#invoke: String | match | source_string | pattern_string | start_index | match_number | plain_flag | nomatch_output}}ИЛИ ЖЕ{{#invoke: String | match | s = source_string | pattern = pattern_string | start = start_index | match = match_number | plain = plain_flag | nomatch = nomatch_output}}Параметры s: строка для поиска шаблон: шаблон или строка для поиска в строкеначало: индекс в исходной строке для начала поиска. Первое Символ строки имеет индекс 1. По умолчанию 1. совпадение: в некоторых случаях может быть возможно сделать несколько совпадений на одномнить. Это указывает, какое совпадение вернуть, где первое совпадение match = 1. Если указано отрицательное число, возвращается совпадение.отсчет с последнего матча. Следовательно, match = -1 совпадает с запросомпоследний матч. По умолчанию 1. plain: флаг, указывающий на то, что шаблон следует понимать как простойтекст. По умолчанию - false. nomatch: Если совпадений не найдено, вывести значение «nomatch», а не ошибку.При вызове с использованием именованных параметров Mediawiki автоматически удаляет все ведущие иликонечный пробел в каждой строке. В некоторых случаях это желательно, еслив других случаях можно сохранить пробелы.Если match_number или start_index выходят за пределы диапазона запрашиваемой строки, тогдаэта функция генерирует ошибку. Также выдается ошибка, если совпадение не найдено.Если добавить параметр ignore_errors = true, то ошибка будет подавлена ипри любом сбое будет возвращена пустая строка.Для получения информации о построении шаблонов Lua, формы [регулярного выражения], см .:* http://www.lua.org/manual/5.1/manual.html#5.4.1* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Patterns* http://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#Ustring_patterns]]- Это точка входа для #invoke: String | matchфункция ул . матч ( кадр )local new_args = str . _getParameters ( frame . args , { 's' , 'pattern' , 'start' , 'match' , 'plain' , 'nomatch' } )local s = new_args [ 's' ] или ""local start = tonumber ( new_args [ 'start' ] ) или 1локальный plain_flag = str . _getBoolean ( new_args [ 'plain' ] или false )локальный шаблон = новый_аргс [ 'шаблон' ] или ''local match_index = math.floor ( tonumber ( new_args [ 'match' ]) или 1 )местный nomatch = new_args [ 'nomatch' ]возврат ул . _match ( s , шаблон , начало , match_index , plain_flag , nomatch )конец- [[позицияЭта функция возвращает один символ из целевой строки в позиции pos.Применение:{{#invoke: String | pos | target_string | index_value}}ИЛИ ЖЕ{{#invoke: String | pos | target = target_string | pos = index_value}}Параметры target: строка для поиска pos: индекс символа, который нужно вернутьПри вызове с использованием именованных параметров Mediawiki автоматически удаляет все ведущие илизавершающий пробел от целевой строки. В некоторых случаях это желательно, еслив других случаях можно сохранить пробелы.Первый символ имеет индексное значение 1.Если кто-то запрашивает отрицательное значение, эта функция выберет символ путем обратного отсчета.с конца строки. Другими словами, pos = -1 - это то же самое, что запрос последнего символа.Запрошенное нулевое значение или значение, превышающее длину строки, возвращает ошибку.]]функция ул . pos ( рамка )local new_args = str . _getParameters ( frame . args , { 'target' , 'pos' } )local target_str = new_args [ 'цель' ] или ''local pos = tonumber ( new_args [ 'pos' ] ) или 0если pos == 0 или math.abs ( pos ) > mw . ustring . len ( target_str ), затемвозврат ул . _error ( 'Индекс строки вне допустимого диапазона' )конецвернуть мв . ustring . sub ( target_str , pos , pos )конец- [[str_findЭта функция дублирует поведение {{str_find}}, включая все его причуды.Это предусмотрено для поддержки существующих шаблонов, но НЕ РЕКОМЕНДУЕТСЯ дляновый код и шаблоны. Вместо этого в новом коде рекомендуется использовать функцию «найти».Возвращает первый индекс в «источнике», совпадающий с «целевым». Индексирование осуществляется на основе 1,и функция возвращает -1, если «целевая» строка отсутствует в «источнике».Важное примечание: если "целевая" строка пуста / отсутствует, эта функция возвращаетзначение «1», что обычно является неожиданным поведением и должно быть учтеноотдельно.]]функция ул . str_find ( кадр )local new_args = str . _getParameters ( frame . args , { 'источник' , 'цель' } )local source_str = new_args [ 'источник' ] или ''local target_str = new_args [ 'цель' ] или ''если target_str == '' тогдавозврат 1конецлокальный старт = mw . ustring . найти ( исходная_страница , целевая_страница , 1 , истина )если start == nil, тоначало = - 1конецобратный стартконец- [[найтиЭта функция позволяет искать целевую строку или шаблон в другомнить.Применение:{{#invoke: String | find | source_str | target_string | start_index | plain_flag}}ИЛИ ЖЕ{{#invoke: String | find | source = source_str | target = target_str | start = start_index | plain = plain_flag}}Параметры источник: строка для поиска цель: строка или шаблон для поиска в источнике начало: индекс в исходной строке для начала поиска, по умолчанию 1 plain: логический флаг, указывающий, что цель должна пониматься как обычная текст, а не как регулярное выражение в стиле Lua, по умолчанию используется значение trueПри вызове с использованием именованных параметров Mediawiki автоматически удаляет все ведущие илизавершающий пробел от параметра. В некоторых случаях это желательно, еслив других случаях можно сохранить пробелы.Эта функция возвращает первый индекс> = "start", где находится "target".внутри «источника». Индексы отсчитываются от 1. Если "цель" не найдена, то этофункция возвращает 0. Если "источник" или "цель" отсутствуют / пусты, этофункция также возвращает 0.Эта функция должна быть безопасной для строк UTF-8.]]функция ул . найти ( рамка )local new_args = str . _getParameters ( frame . args , { 'источник' , 'цель' , 'начало' , 'обычный' } )local source_str = new_args [ 'источник' ] или ''локальный шаблон = новый_аргс [ 'цель' ] или ''local start_pos = tonumber ( new_args [ 'start' ]) или 1local plain = new_args [ 'plain' ] или истинаесли source_str == '' или pattern == '', товозврат 0конецравнина = ул . _getBoolean ( простой )локальный старт = mw . ustring . найти ( исходная_строка , шаблон , начальная_позиция , обычная )если start == nil, тоначало = 0конецобратный стартконец- [[заменятьЭта функция позволяет заменять целевую строку или шаблон в другой.нить.Применение:{{#invoke: String | replace | source_str | pattern_string | replace_string | replacement_count | plain_flag}}ИЛИ ЖЕ{{#invoke: String | replace | source = source_string | pattern = pattern_string | replace = replace_string | count = replacement_count | plain = plain_flag}}Параметры источник: строка для поиска шаблон: строка или шаблон для поиска в источнике replace: заменяющий текст count: количество замен, по умолчанию все. plain: логический флаг, указывающий, что шаблон следует понимать как простой текст, а не как регулярное выражение в стиле Lua, по умолчанию используется значение true]]функция ул . заменить ( рамка )local new_args = str . _getParameters ( frame . args , { 'source' , 'pattern' , 'replace' , 'count' , 'plain' } )local source_str = new_args [ 'источник' ] или ''локальный шаблон = новый_аргс [ 'шаблон' ] или ''local replace = new_args [ 'replace' ] или ''локальный кол = ToNumber ( new_args [ 'кол' ] )local plain = new_args [ 'plain' ] или истинаесли source_str == '' или pattern == '', товернуть source_strконецравнина = ул . _getBoolean ( простой )если просто, тошаблон = ул . _escapePattern ( шаблон )заменить = mw . ustring . gsub ( replace , "%%" , " %%%% " ) - Требуется только экранировать последовательности замены.конецместный результатесли count ~ = nil, торезультат = mw . ustring . gsub ( source_str , шаблон , заменить , счет )ещерезультат = mw . ustring . gsub ( source_str , шаблон , заменить )конецвернуть результатконец- [[ простая функция для передачи string.rep в шаблоны.]]функция ул . rep ( кадр )местные повторы = ToNumber ( кадр . арг [ 2 ] )если не повторы, товозврат ул . _error ( 'функция rep ожидает число в качестве второго параметра, полученного "' .. ( frame . args [ 2 ] или '' ) .. '"' )конецвернуть string.rep ( frame . args [ 1 ] или '' , повторения )конец- [[побегЭта функция экранирует специальные символы из строкового шаблона Lua. См. [1]для получения подробной информации о том, как работают шаблоны.[1] https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual#PatternsПрименение:{{#invoke: String | escapePattern | pattern_string}}Параметры pattern_string: строка шаблона, которую нужно экранировать.]]функция ул . escapePattern ( кадр )локальный узор_стр = фрейм . аргументы [ 1 ]если не pattern_str, товозврат ул . _error ( 'Строка шаблона не указана' )конецместный результат = ул . _escapePattern ( pattern_str )вернуть результатконец- [[считатьЭта функция подсчитывает количество вхождений одной строки в другую.]]функция ул . количество ( кадр )local args = str . _getParameters ( frame . args , { 'источник' , 'шаблон' , 'простой' })локальный источник = аргументы . источник или ''локальный шаблон = аргументы . узор или ''местная равнина = ул . _getBoolean ( args . plain или true )если просто, тошаблон = ул . _escapePattern ( шаблон )конецlocal _ , count = mw . ustring . gsub ( источник , шаблон , '' ) счетчик возвратаконец- [[заканчиваетсяЭта функция определяет, заканчивается ли строка другой строкой.]]функция ул . endwith ( рамка )local args = str . _getParameters ( frame . args , { 'источник' , 'шаблон' })локальный источник = аргументы . источник или ''локальный шаблон = аргументы . узор или ''если шаблон == '' тогда- Все строки заканчиваются пустой строкой.вернуть "да"конецесли мв . ustring . sub ( источник , - mw . ustring . len ( шаблон ), - 1 ) == шаблон, затемвернуть "да"ещевернуться ""конецконец- [[присоединитьсяОбъедините все непустые аргументы вместе; первый аргумент - разделитель.Применение:{{#invoke: String | join | sep | one | two | three}}]]функция ул . присоединиться ( рамка )местные аргументы = {}местный сендля _ , v в ipairs ( frame . args ) сделайтеесли сентябрь тоесли v ~ = '', тоtable.insert ( аргументы , v )конецещеsep = vконецконецвернуть table.concat ( args , sep или '' )конец- [[Вспомогательная функция, которая заполняет список аргументов, учитывая, что пользователю может потребоваться использовать сочетаниеименованные и безымянные параметры. Это актуально, потому что именованные параметры неидентичны безымянным параметрам из-за обрезки строк и при работе со строкамииногда мы хотим сохранить или удалить этот пробел в зависимости от приложения.]]функция ул . _getParameters ( frame_args , arg_list )local new_args = {}локальный индекс = 1местная ценностьдля _ , аргумент в ipairs ( список_аргументов ) сделатьзначение = frame_args [ аргумент ]если значение == ноль, тозначение = frame_args [ индекс ]индекс = индекс + 1конецnew_args [ arg ] = значениеконецвернуть new_argsконец- [[Вспомогательная функция для обработки сообщений об ошибках.]]функция ул . _error ( error_str )локальный кадр = mw . getCurrentFrame ()local error_category = frame . аргументы . error_category или "Ошибки, обнаруженные строкой модуля"локальный ignore_errors = frame . аргументы . ignore_errors или falseлокальный no_category = фрейм . аргументы . no_category или falseесли ул . _getBoolean ( ignore_errors ), затемвернуться ''конецlocal error_str = ' Ошибка строкового модуля:' .. error_str .. ''если error_category ~ = '', а не str . _getBoolean ( no_category ), затемerror_str = '[[Категория:' .. error_category .. ']]' .. error_strконецвернуть error_strконец- [[Вспомогательная функция для интерпретации логических строк]]функция ул . _getBoolean ( boolean_str )локальное логическое_значениеесли type ( boolean_str ) == 'строка', тоboolean_str = boolean_str : lower ()если boolean_str == 'false' или boolean_str == 'no' или boolean_str == '0'или boolean_str == '' тогдаboolean_value = ложьещеboolean_value = trueконецelseif type ( boolean_str ) == 'boolean' тогдаboolean_value = boolean_strещеerror ( 'Логическое значение не найдено' )конецвернуть boolean_valueконец- [[Вспомогательная функция, которая экранирует все символы шаблона, чтобы они были обработаныкак обычный текст.]]функция ул . _escapePattern ( pattern_str )вернуть мв . ustring . gsub ( pattern_str , "([% (%)%. %%% +% -% *%?% [% ^% $%]])" , "%%% 1" )конецreturn str