Строковые функции
$string()
Сигнатура: $string(arg, prettify)
Приводит arg к строке: строки не изменяются; функции становятся пустой строкой; числовая бесконечность и NaN вызывают ошибку, так как не представимы JSON-числом; все остальные значения преобразуются в JSON-строку через JSON.stringify. Если arg не указан, используется значение контекста. При prettify = true создаётся отформатированный JSON: каждое поле на отдельной строке, с отступом по глубине поля.
Примеры: $string(5) => "5"; [1..5].$string() => ["1", "2", "3", "4", "5"].
$length()
Сигнатура: $length(str)
Возвращает число символов строки str. Если str не указан, используется контекст; если str не строка, возникает ошибка.
Пример: $length("Hello World") => 11.
$substring()
Сигнатура: $substring(str, start[, length])
Возвращает строку с символами str, начиная с позиции start (отсчёт с нуля). Если str не указан, используется контекст; для нестрокового str возникает ошибка. При заданном length подстрока содержит не более length символов. Отрицательный start означает число символов от конца str; полное определение приведено в substr.
Примеры:
$substring("Hello World", 3)=>"lo World"$substring("Hello World", 3, 5)=>"lo Wo"$substring("Hello World", -4)=>"orld"$substring("Hello World", -4, 2)=>"or"
$substringBefore()
Сигнатура: $substringBefore(str, chars)
Возвращает часть str до первого вхождения последовательности chars. Если str не указан, используется контекст. Если str не содержит chars, возвращается str. Оба аргумента должны быть строками.
Пример: $substringBefore("Hello World", " ") => "Hello".
$substringAfter()
Сигнатура: $substringAfter(str, chars)
Возвращает часть str после первого вхождения chars. Если str не указан, используется контекст. Если str не содержит chars, возвращается str. Оба аргумента должны быть строками.
Пример: $substringAfter("Hello World", " ") => "World".
$uppercase()
Сигнатура: $uppercase(str)
Возвращает str, переведённую в верхний регистр. Если str не указан, используется контекст; для нестрокового значения возникает ошибка.
Пример: $uppercase("Hello World") => "HELLO WORLD".
$lowercase()
Сигнатура: $lowercase(str)
Возвращает str, переведённую в нижний регистр. Если str не указан, используется контекст; для нестрокового значения возникает ошибка.
Пример: $lowercase("Hello World") => "hello world".
$trim()
Сигнатура: $trim(str)
Нормализует и удаляет пробельные символы в str: табуляции, возвраты каретки и переводы строки заменяет пробелами; непрерывные последовательности пробелов сводит к одному; удаляет начальные и конечные пробелы. Если str не указан, используется контекст; для нестрокового значения возникает ошибка.
Пример: $trim(" Hello \n World ") => "Hello World".
$pad()
Сигнатура: $pad(str, width [, char])
Возвращает копию str, дополненную при необходимости так, чтобы число символов было не меньше абсолютного значения width. При положительном width строка дополняется справа, при отрицательном — слева. char задаёт символы дополнения; по умолчанию это пробел.
Примеры:
$pad("foo", 5)=>"foo "$pad("foo", -5)=>" foo"$pad("foo", -5, "#")=>"##foo"$formatBase(35, 2) ~> $pad(-8, '0')=>"00100011"
$contains()
Сигнатура: $contains(str, pattern)
Возвращает true, если str соответствует pattern, иначе false. Если str не указан, используется контекст. pattern может быть строкой или регулярным выражением: строка ищется как непрерывная последовательность символов, регулярное выражение сопоставляется с содержимым str.
Примеры:
$contains("abracadabra", "bra")=>true$contains("abracadabra", /a.*a/)=>true$contains("abracadabra", /ar.*a/)=>false$contains("Hello World", /wo/)=>false$contains("Hello World", /wo/i)=>truePhone[$contains(number, /^077/)]=>{ "type": "mobile", "number": "077 7700 1234" }
$split()
Сигнатура: $split(str, separator [, limit])
Разделяет str на массив подстрок. Если str не указан, используется контекст; для нестрокового str возникает ошибка. separator может быть строкой или регулярным выражением. Пустая строка разделяет str на отдельные символы; регулярное выражение разделяет вокруг каждой соответствующей ему последовательности. Необязательный limit — максимальное число подстрок; остальные отбрасываются. Он должен быть неотрицательным числом.
Примеры:
$split("so many words", " ")=>[ "so", "many", "words" ]$split("so many words", " ", 2)=>[ "so", "many" ]$split("too much, punctuation. hard; to read", /[ ,.;]+/)=>["too", "much", "punctuation", "hard", "to", "read"]
$join()
Сигнатура: $join(array[, separator])
Соединяет массив строк в одну строку, разделяя компоненты необязательным separator. Если массив содержит нестроковый элемент, возникает ошибка. По умолчанию separator — пустая строка; он должен быть строкой.
Примеры:
$join(['a','b','c'])=>"abc"$split("too much, punctuation. hard; to read", /[ ,.;]+/, 3) ~> $join(', ')=>"too, much, punctuation"
$match()
Сигнатура: $match(str, pattern [, limit])
Применяет к str регулярное выражение pattern и возвращает массив объектов со сведениями о каждом совпадении. У объекта есть поля match (совпавшая подстрока), index (позиция совпадения в str, с нуля) и groups (массив захваченных групп, если в регулярном выражении есть скобочные группы). Если str не указан, используется контекст; он должен быть строкой.
$match("ababbabbcc",/a(b+)/)
[
{ "match": "ab", "index": 0, "groups": ["b"] },
{ "match": "abb", "index": 2, "groups": ["bb"] },
{ "match": "abb", "index": 5, "groups": ["bb" ] }
]
$replace()
Сигнатура: $replace(str, pattern, replacement [, limit])
Находит в str вхождения pattern и заменяет их на replacement. Если str не указан, используется контекст; он должен быть строкой. pattern может быть строкой или регулярным выражением.
replacement может быть строкой или функцией. В строковой замене для regex можно ссылаться на совпадение и группы через $N: $0 — всё совпадение; $N при N > 0 — N-я группа; при номере больше числа групп подставляется пустая строка; литеральный $ записывается как $$. Функция замены вызывается для каждого совпадения regex с одним аргументом — объектом совпадения из $match() — и должна вернуть строку. limit задаёт максимальное число замен; остаток входной строки копируется без изменений.
Примеры:
$replace("John Smith and John Jones", "John", "Mr")=>"Mr Smith and Mr Jones"$replace("John Smith and John Jones", "John", "Mr", 1)=>"Mr Smith and John Jones"$replace("abracadabra", /a.*?a/, "*")=>"*c*bra"$replace("John Smith", /(\w+)\s(\w+)/, "$2, $1")=>"Smith, John"$replace("265USD", /([0-9]+)USD/, "$$$1")=>"$265"
(
$convert := function($m) {
($number($m.groups[0]) - 32) * 5/9 & "C"
};
$replace("temperature = 68F today", /(\d+)F/, $convert)
)
Результат: "temperature = 20C today".
$eval()
Сигнатура: $eval(expr [, context])
Разбирает и вычисляет строку expr, содержащую литеральный JSON или выражение JSONata, используя текущий контекст. Контекст можно переопределить вторым параметром.
Примеры: $eval("[1,2,3]") => [1, 2, 3]; $eval('[1,$string(2),3]') => [1,"2",3].
$base64encode()
Сигнатура: $base64encode()
Преобразует ASCII-строку в представление Base64. Каждый символ считается байтом двоичных данных; все символы должны находиться в диапазоне 0x00–0xFF (включая символы URI-кодированных строк). Символы Unicode вне диапазона не поддерживаются.
Пример: $base64encode("myuser:mypass") => "bXl1c2VyOm15cGFzcw==".
$base64decode()
Сигнатура: $base64decode()
Преобразует байты Base64 в строку в кодировке UTF-8 Unicode.
Пример: $base64decode("bXl1c2VyOm15cGFzcw==") => "myuser:mypass".
$encodeUrlComponent()
Сигнатура: $encodeUrlComponent(str)
Кодирует компонент URL, заменяя отдельные символы одной, двумя, тремя или четырьмя escape-последовательностями UTF-8.
Пример: $encodeUrlComponent("?x=test") => "%3Fx%3Dtest".
$encodeUrl()
Сигнатура: $encodeUrl(str)
Кодирует URL, заменяя отдельные символы одной, двумя, тремя или четырьмя escape-последовательностями UTF-8.
Пример: $encodeUrl("https://mozilla.org/?x=шеллы") => "https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B".
$decodeUrlComponent()
Сигнатура: $decodeUrlComponent(str)
Декодирует компонент URL, ранее созданный encodeUrlComponent.
Пример: $decodeUrlComponent("%3Fx%3Dtest") => "?x=test".
$decodeUrl()
Сигнатура: $decodeUrl(str)
Декодирует URL, ранее созданный encodeUrl.
Пример: $decodeUrl("https://mozilla.org/?x=%D1%88%D0%B5%D0%BB%D0%BB%D1%8B") => "https://mozilla.org/?x=шеллы".