LCML/Строки
abbrev
abbrev - Функция abbrev сокращает строку до указанной ширины, добавляя троеточие (…) в конце.
Метод
abbrev(width, s)
Part: LCML/Строки
Если длина строки меньше указанной ширины, она возвращается без изменений. Минимальная ширина — 4 символа.
Формат
abbrev width s
width: Максимальная длина строки. Должна быть не менее 4.
s: Исходная строка для сокращения. Результат
Возвращает строку, сокращенную до width - 3 символов, с троеточием (…) в конце. Если ширина недостаточна, возникает ошибка.
Примеры использования
Сокращение строки с троеточием в конце: {{ $result := abbrev 8 “hello world” }} {{ $result }} >> hello…
Без сокращения, так как строка короче максимальной ширины: {{ $result := abbrev 15 “hello world” }} {{ $result }} >> hello world
Минимальная допустимая ширина: {{ $result := abbrev 4 “hello world” }} {{ $result }} >> h…
abbrevboth
abbrevboth - Функция abbrevboth сокращает строку до указанной ширины, добавляя троеточия (…) как в начале, так и в конце строки.
Метод
abbrevboth(offset, width, s)
Part: LCML/Строки
Это позволяет сохранить ключевую часть строки в середине. Минимальная ширина — 7 символов.
Формат
abbrevboth offset width s
offset: Смещение строки, указывающее, какую часть оставить видимой.
width: Максимальная длина строки. Должна быть не менее 7.
s: Исходная строка для сокращения. Результат
Возвращает строку, сокращенную до width, с троеточиями в начале и конце, если это необходимо. Центральная часть строки будет видимой.
Примеры использования
Сокращение строки с троеточиями в начале и конце, оставляя середину видимой: {{ $result := abbrevboth 5 10 “abcdefghijklmno” }} {{ $result }} >>…fghi…
Без сокращения, так как строка короче максимальной ширины: {{ $result := abbrevboth 0 25 “hello wonderful world” }} {{ $result }} >> hello wonderful world
Ошибка из-за недостаточной ширины: {{ $result := abbrevboth 5 6 “abcdefghij” }} {{ $result }} >> stringutils illegal argument: Minimum abbreviation width with offset is 7
adler32sum
adler32sum - Функция возвращает Adler-32 хэш от входной строки.
Метод
Part: LCML/Строки
Формат
adler32sum input
- input — строка, для которой нужно вычислить Adler-32 хэш. Результат
Возвращает строку, содержащую хэш в шестнадцатеричном виде.
Пример использования
{{ $hashedString := adler32sum $exampleString }} {{ $hashedString }} >> 232806872
cat
cat - Функция cat объединяет строки, удаляя пустые значения (nil).
Метод
Part: LCML/Строки
Формат
cat v…
- v: список элементов. Результат
Объединенная строка.
Пример использования
{{ $result := cat “hello” “” “world” }} {{ $result }} >> hello world
concatenation
concatenation - Объединение строк (deprecated: concatination)
Метод
concatenation value1 value2 …
Part: LCML/Строки
Функция concatenation объединяет переданные текстовые значения в одну строку и возвращает результат. Количество аргументов не ограничено.
Функция полезна для объединения строк без дополнительных разделителей.
Формат
concatenation value1 value2 ...
- value1, value2,… - строки, которые необходимо объединить. Результат
Функция возвращает строку, состоящую из всех переданных значений, соединённых без разделителей.
Пример использования
{{ concatenation "Ехал " "Грека " "через " "реку" }}
Ехал Грека через реку
{{ concatenation "Hello, " "World!" }}
Hello, World!
contains
contains - Проверка наличия подстроки в строке
Метод
contains str substr message messageelse
Part: LCML/Строки
Функция contains ищет указанную подстроку (или несколько подстрок) в строке и возвращает одно из заданных сообщений в зависимости от результата.
Формат
contains str substr message messageelse
- str - строка, в которой выполняется поиск.
- substr - подстрока или несколько подстрок, разделённых символом |, которые необходимо найти.
- message - текст, возвращаемый в случае нахождения хотя бы одной из подстрок.
- messageelse - текст, возвращаемый в случае, если подстрока не найдена. Результат
Возвращает message, если хотя бы одна из подстрок из substr найдена в строке str. В противном случае возвращает messageelse.
Пример использования
{{ contains "Ехал Грека через реку" "Грека|через" "Найдено" "Не найдено" }}
Найдено
{{ contains "Ехал Грека через реку" "мост" "Подстрока найдена" "Подстрока отсутствует" }}
Подстрока отсутствует
{{ contains "Погода сегодня солнечная" "дождь|снег" "Есть осадки" "Без осадков" }}
Без осадков
contains1
contains1 - Проверка наличия подстроки в строке
Метод
contains1 message str substr
Part: LCML/Строки
Функция contains1 выполняет поиск подстроки (или нескольких подстрок, разделённых символом | ) в строке и возвращает заданное сообщение, если подстрока найдена.
Эта функция полезна для ситуаций, когда нужно просто вернуть сообщение при наличии совпадений, а текст в случае отсутствия подстроки не требуется.
Формат
contains1 message str substr
message - текст, возвращаемый в случае нахождения подстроки.
str - строка, в которой осуществляется поиск.
substr - подстрока или несколько подстрок, разделённых символом |, которые необходимо найти. Результат
Возвращает message, если хотя бы одна из подстрок из substr найдена в строке str. Если ничего не найдено, возвращается пустая строка.
Пример использования
{{ contains1 "Найдено!" "Ехал Грека через реку" "Грека|через" }}
Найдено!
{{ contains1 "Есть совпадение" "Погода сегодня солнечная" "дождь|снег" }}
{{ contains1 "Обнаружено" "Ищем ключевое слово" "ключ|слово" }}
Обнаружено
convert
convert - Конвертация текста в заданную кодировку
Метод
convert content targetEncoding
Part: LCML/Строки
Функция convert преобразует содержимое слайса байтов в указанную кодировку: UTF-8, UTF-8 BOM, или windows-1251.
Если исходные данные не соответствуют поддерживаемым кодировкам, возвращается nil.
Поддерживаемые кодировки:
UTF-8
UTF-8 BOM
windows-1251 Формат
convert content targetEncodingcontent - слайс байтов, содержащий исходный текст.
targetEncoding - целевая кодировка ( UTF-8, UTF-8 BOM, windows-1251 ). Результат
Возвращает преобразованный слайс байтов в целевой кодировке или nil, если исходные данные не распознаны или имеют неподдерживаемую кодировку.
Пример использования
Пользовательский сценарий: открываем файл и при кодировке не равной UTF-8 - конвертируем.
{{ $open_file := readfile $file_url }}
{{ $encoding := detectencoding $open_file }}
{{ if ne $encoding "UTF-8" }}
{{ $open_file = convert $open_file "UTF-8" }}
{{ end }}
cut
cut - Обрезка строки по количеству символов
Метод
Part: LCML/Строки
Функция cut позволяет обрезать строку до заданного количества символов, добавляя указанный суффикс (например, троеточие… ) после последнего обрезанного символа.
Формат:
cut string length suffix
- string - исходная строка, которую нужно обрезать.
- length - максимальное количество символов в результирующей строке.
- suffix - строка, добавляемая в конце обрезанной строки (например,… ). Результат:
Возвращает строку, обрезанную до указанной длины, с добавлением заданного суффикса. Если длина строки меньше или равна заданному количеству символов, строка возвращается без изменений.
Пример использования:
{{ cut "Ехал Грека чере реку" 2 }}
Результат: Ехал Грека…
decodebase64
decodebase64 - Кодирование строки в Base64
Метод
Part: LCML/Строки
Формат
decodebase64 payload
- payload (string) — Строка, которую нужно закодировать в Base64. Результат
Возвращает строку в формате Base64.
Пример использования
detectencoding
detectencoding - Определение кодировки текстового содержимого
Метод
Part: LCML/Строки
Функция detectencoding определяет кодировку текстового содержимого.
Формат:
detectencoding content
- content — слайс байтов, содержащий текстовые данные, для которых необходимо определить кодировку. Результат:
Возвращает строку, содержащую определённое название кодировки, например, UTF-8, UTF-8 BOM, windows-1251.
В случае ошибки возвращает текст ошибки, например “Charset not detected.”
Пример использования:
{{ $encoding := detectencoding $open_file }}
initials
initials - Функция initials возвращает инициалы из строки.
Метод
Part: LCML/Строки
Формат
initials s
- s: строка для обработки. Результат
Возвращает строку с инициалами.
Пример использования
{{ $result := initials “Ivan Lovetsky” }} {{ $result }} >> IL
invert
invert - Инвертирование строки
Метод
Part: LCML/Строки
Функция invert переворачивает строку, возвращая символы в обратном порядке.
Формат:
invert str
- str — строка, которую нужно инвертировать. Результат:
Возвращает строку, символы которой расположены в обратном порядке.
Пример использования:
{{ $reversedMes := invert "string" }}
join
join - Функция join объединяет элементы в строку с указанным разделителем.
Метод
Part: LCML/Строки
Формат
join sep v
- sep: разделитель.
- v: значения для объединения (срез или массив). Результат
Возвращает строку из элементов, объединённых с sep.
Пример использования
{{ $result := join “, ” (list “sun” “moon” “sky”) }} {{ $result }} >> sun, moon, sky
indent nindent
indent nindent - Функции indent и nindent добавляют отступы к строкам. Nindent добавляет дполнительно отступ перед строками.
Метод
Part: LCML/Строки
Формат
indent spaces v nindent spaces v
spaces: количество пробелов для отступа.
v: строка для обработки. Пример использования
{{ $result := indent 4 “hello\nworld” }} {{ $result }} >> hello world
{{ $result := nindent 4 “hello\nworld” }} {{ $result }} >>
hello world
plural
plural - Функция plural выбирает форму строки в зависимости от количества.
Метод
Part: LCML/Строки
Формат
plural one many count
one: строка для единственного числа.
many: строка для множественного числа.
count: количество, определяющее форму. Результат
Возвращает строку, соответствующую переданному количеству (one, если count = 1, иначе many).
Пример использования
{{ $result := plural “wolf” “wolves” 1 }} {{ $result }} >> wolf
{{ $result := plural “wolf” “wolves” 3 }} {{ $result }} >> wolves
replace
replace - Заменяем подстроки в строке
Метод
Part: LCML/Строки
Функция replace производит замену указанных подстрок в строке с возможностью ограничения количества замен.
Формат:
replace str old new n
- str — исходная строка, в которой нужно выполнить замену.
- old — подстрока, которую необходимо заменить.
- new — подстрока, на которую будет выполнена замена.
- n (целое число) — количество замен:
- -1 — заменить все вхождения.
Результат:
Возвращает строку с произведенными заменами.
Пример использования:
{{ replace "Ехал Грека через реку" "Грека" "Василий" -1 }}
Результат:
Ехал Василий через реку
rereplace
rereplace - Заменяем с использованием регулярного выражения
Метод
Part: LCML/Строки
Функция rereplace позволяет заменять подстроки, соответствующие регулярному выражению.
Формат:
rereplace str mask new
- str — исходная строка.
- mask — регулярное выражение для поиска подстрок, которые нужно заменить.
- new — подстрока или регулярное выражение, на которое выполняется замена. Результат:
Возвращает строку, в которой подстроки, соответствующие шаблону, заменены на указанное значение.
Примеры использования:
Пример 1:
{{ rereplace "abc-123-xyz" "\\d+" "456" }}
>> abc-456-xyz
Пример 2 (сценарий):
{{ $description := "Курс для начинающих программистов 101. Контакты: 123-456." }}
{{ $updatedDescription := replace $description "101" "Основы программирования на Go" -1 }}
{{ $finalDescription := rereplace $updatedDescription "\\d{3}-\\d{3}" "[контактный номер скрыт]" }}
>> Курс для начинающих программистов Основы программирования на Go. Контакты: [контактный номер скрыт].
sortalpha
sortalpha - Функция sortalpha выполняет сортировку строкового представления элементов списка в алфавитном порядке.
Метод
Part: LCML/Строки
Формат
sortalpha list
- list: Список элементов, которые нужно отсортировать. Результат
Возвращает новый список, отсортированный в алфавитном порядке.
Пример использования
{{ $list := list “sun” “moon” “sky” }} {{ $sorted := sortalpha $list }} {{ $sorted }} >> [moon sky sun]
split
split - Функция split разделяет строку по указанному разделителю и возвращает результат в виде слайса строк. Возвращает interface{}, что означает, что результат может быть любым типом, и нужно будет привести его к нужному типу, чтобы работать с ним как с конкретным типом (например, слайсом строк).
Метод
Part: LCML/Строки
Формат:
split str sep
- str — строка, которую необходимо разделить.
- sep — строка-разделитель, по которому будет происходить разделение. Результат:
Возвращает срез строк в виде интерфейса.
Пример использования:
{{$splitResult := split "apple,banana,watermelon" ","}}
{{$splitResult}}
Результат:
["apple", "banana", "watermelon"]
splitn
splitn - Функция splitn разбивает строку на части по разделителю, ограничивая количество частей.
Метод
Part: LCML/Строки
Формат
splitn sep n orig
sep: разделитель.
n: максимальное количество частей.
orig: строка для разбиения. Результат
Возвращает мапу с индексами частей как ключами и частями строки как значениями.
Пример использования
{{ $result := splitn “, ” 2 “a, b, c” }} {{ $result }} >> map[_0:a _1:b,c]
splittostring
splittostring - Функция splittoString разделяет строку по указанному разделителю и возвращает результат в виде слайса строк. В отличие от SPLIT, возвращает конкретный тип []string, так что результат сразу готов для использования как слайс строк.
Метод
Part: LCML/Строки
Формат:
splittostring str sep
- str — строка, которую необходимо разделить.
- sep — строка-разделитель, по которому будет происходить разделение. Результат:
Возвращает срез строк.
Пример использования:
{{$splitResult := splittostring "apple,banana,cherry" ","}}
{{$splitResult}}
>> ["apple", "banana", "cherry"]
quote squote
quote squote - Функции quote и squote оборачивают строки в кавычки или апострофы.
Метод
Part: LCML/Строки
Формат
quote str… squote str…
- str: список строк для обработки. Примеры использования
{{ $result := quote “hello” “world” }} {{ $result }} >> “hello” “world”
{{ $result := squote “hello” “world” }} {{ $result }} >> 'hello' 'world'
substring
substring - Функция substring вырезает подстроку из переданной строки. Исходная строка при этом остаётся неизменной.
Метод
Part: LCML/Строки
Формат:
substring str from count
- str — строка, из которой будет вырезаться подстрока.
- from — позиция первого символа для вырезания (нумерация начинается с 0). Если отрицательное, отсчёт ведётся с конца строки.
- count — количество символов для вырезания. Если не указано, вырезание продолжается до конца строки. Результат:
Возвращает вырезанную подстроку. Если параметры выходят за пределы длины строки, результат обрезается автоматически.
Примеры использования:
{{ substring "abcde" 1 3 }}
Результат:
"bcd"
{{ substring "abcde" 2 }}
Результат:
"cde"
{{ substring "abcde" -3 }}
Результат:
"cde"
{{ substring "abcde" 1 10 }}
Результат:
"bcde"
trunc
trunc - Функция trunc обрезает строку до заданной длины.
Метод
Part: LCML/Строки
Формат
trunc c s
c: количество символов (положительное или отрицательное).
s: строка для обрезки. Результат
Возвращает строку, обрезанную до c символов.
Пример использования
{{ $result := trunc 5 “hello world” }} {{ $result }} >> hello
{{ $result := trunc -5 “hello world” }} {{ $result }} >> world
untitle
untitle - Функция untitle преобразует строку, делая первую букву каждого слова строчной. В качестве разделителя функция использует пробел.
Метод
Part: LCML/Строки
Формат
untitle str
- str: входная строка. Результат Возвращает строку, в которой первый символ каждого слова преобразован в строчную букву.
Пример использования
{{ $result := untitle “Hello World” }} {{ $result }} >> hello world