В английской Википедии есть несколько шаблонов и модулей Lua , которые могут форматировать или манипулировать строками . В этом контексте «строка» — это любой фрагмент текста, являющийся частью страницы. Эта страница справки охватывает несколько полезных приемов; полный каталог шаблонов можно найти в навигационном блоке ниже.
Самая простая операция — взятие подстроки, фрагмента строки, взятого с определенного смещения (называемого «индексом») от начала или конца. Существует ряд устаревших шаблонов, предлагающих это (см. navbox), но для нового кода используйте {{ #invoke:String |sub| string | startIndex | endIndex }}. Индексы начинаются с единицы (то есть первая строка имеет номер один), включаются (то есть указанные вами индексы включены) и могут быть отрицательными при подсчете с другого конца. Например, {{#invoke:string|sub|12345678|2|-3}}
→ 23456. Не все устаревшие шаблоны подстрок используют эту схему нумерации, поэтому проверьте документацию незнакомых шаблонов.
Если вы думаете, что кто-то уже сделал то, что вы хотите, посмотрите в навигационное поле ниже и проверьте. Гораздо проще найти и использовать существующий шаблон, чем писать сложный код, чтобы сделать все это в одном месте.
Найдите шаблон, который сделает все, что вам нужно, за один раз. Например, вместо того, чтобы брать последние шесть символов строки и проверять, равны ли они "navbox", используйте {{ str endswith | string |navbox}} .
Если вы передадите строку " abc def
" (без кавычек) в шаблон через именованный или явно пронумерованный параметр (например, {{template|1= abc def }}
пробелы снаружи будут обрезаны и не будут учитываться ни при каких действиях шаблона с этим параметром. Он увидит строку abc def
.
Если вы используете автоматически нумерованные параметры ( {{template| abc def }}
), пробелы снаружи учитываются, но некоторые шаблоны могут по-прежнему удалять их самостоятельно.
Регулярные выражения (или regex) — это распространенная и очень универсальная техника программирования для работы со строками. В Википедии вы можете использовать ограниченную версию regex, называемую шаблоном Lua, для выбора и изменения фрагментов текста из строки. Шаблон — это фрагмент кода, описывающий то, что вы ищете в строке. Символы, которые вы можете использовать в шаблоне:
.
означает любой отдельный символ. ...
будет означать любые три символа и т. д.*
, +
, ?
, и -
— квантификаторы. Они означают, что предыдущий символ может быть повторен n раз, где для каждого символа n ≥ 0 , n > 0 , n равно нулю или единице, и n ≥ 0 снова соответственно. (Разница с -
в том, что он «нежадный», он сопоставляет как можно меньше символов, учитывая остаток шаблона.)^
означает начало строки, а $
означает конец.[abc]
означает любой символ из a, b или c, а также [^abc]
означает все, что не является a, b или c.%
лишает их обычного значения и заставляет их означать «буквально» тот символ, которым они являются. Предшествующий чему-либо символ %
(например, %a
) имеет особое значение, которое вы можете проверить в руководстве.Если сложить все это вместе, ^[Aa]*b?c
то получим соответствие первым шести символам «AaAabcccc».
Заключив часть шаблона в скобки, вы можете извлечь его, ссылаясь на него с помощью кода %1
. Пример:
{{#invoke:string|replace|AaAabc XYZ|^([Aa]*)b?c|%1|plain=false}}
AaAa XYZ
.*
в конец строки поиска; это выберет все, что находится после остальной части шаблона. дает .{{#invoke:string|replace|AaAabc XYZ|^([Aa]*)b?c.*|%1|plain=false}}
AaAa
Википедия не имеет серии функций парсера "StringFunctions" (перечисленных ниже) и не собирается их получать (по phab:T8455). Вместо этого шаблоны используют Lua (через Module:String или иным образом) наряду с существующими функциями парсера.
Ни одна из этих функций не будет работать, но у них есть альтернативы:
{{#invoke:string|len}}
{{#invoke:string|find}}
{{#invoke:string|sub}}
{{#invoke:string|count}}
{{#invoke:string|replace}}
{{string split}}
{{#invoke:urldecode|urlDecode}}
Если вы не уверены в том, что будет делать какой-либо код, вставьте его в Special:ExpandTemplates , который выполнит его оценку и предоставит вам возможность его просмотреть.
Различные шаблоны обработки строк или функции синтаксического анализатора см . в таблице навигационной панели ниже.