Перейти к основному содержимому
Версия: 2.0 (WIP)

Строковые функции

$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) => true
  • Phone[$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. Каждый символ считается байтом двоичных данных; все символы должны находиться в диапазоне 0x000xFF (включая символы 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=шеллы".