Как переводить число в строку и заменять разделители

Разберем несколько примеров, используя такие переменные в списке:

{
  "name": "Витя",
  "last_request": {
    "total": 12000.5,
    "isPayed": true
  },
  "array": [
    "a",
    "b",
    "c",
    "d"
  ],
  "names": [
    "Вася",
    "Дуся",
    "Марина"
  ]
}

Пример 1

Хелпер replace работает со строками, и может заменять одну часть строки на какую-то другую. Например, у нас есть строка и её значение:

"name": "Витя"

С помощью нашего хелпера поменяем букву в переменной name таким образом:

{{replace name "В" "М"}}

Заменять одни части строки на другие можно везде, где используются переменные, например в компоненте Сообщение. Если так сделать, то в бот придет уже измененное значение:

Протестировать можно в песочнице.

Пример 2

Рассмотрим еще один пример. В массиве, в last_request есть переменная total, у которой в значении — число 12000.5.

"last_request": 
 {
   "total": 12000.5
 }

Дробные части чисел в переменных записываются через точку, но мы хотим отправить число в сообщении через запятую. И так как total — это число, то мы не можем использовать с ним replace, как в прошлом случае, потому что replace работает только со строками.

Поэтому, прежде чем мы сможем заменить точку на запятую, нам нужно превратить число в строку. Сделаем это с помощью stringify, этот хелпер как раз нужен, чтобы приводить разные типы данных к строкам.

{{replace (stringify last_request.total) "." ","}}

Обратите внимание, что stringify находится внутри круглых скобок. Одни хелперы можно вкладывать в другие вместо переменных, обернув их в круглые скобки.

Теперь можно использовать replace для переименования символов:

{{replace (stringify last_request.total) "." ","}}

Мы заменяем точку запятой, поэтому вначале в кавычках ставим точку "." затем запятую ","

В бот придет значение с запятой:

Таким способом можно менять любые другие символы в переменной, будь то цифры или буквы.

Протестировать можно в песочнице.

Пример 3

Stringify также может преобразовать в строку объекты с вложенными переменными. Если применить stringify к объекту или списку, то он превратит его в формат JSON. Это может пригодиться, если нужно отправить объект через компонент Запрос, или вывести переменные в чат для логирования и поиска ошибок.

Выведем все переменные и значения из этого списка:

"last_request": 
 {
  "total": 12000.5,
  "isPayed": true
 }

Этим хелпером:

{{stringify last_request}}

Протестировать можно в песочнице.

Этот хелпер можно использовать похожим образом, если нужно вывести массив:

{{stringify array}}

Например, выведем этот массив:

"array": 
 [
    "a",
    "b",
    "c",
    "d"
 ]

Хеллер {{stringify array}} работает по аналогии с хелпером {{stringify array}}.

Протестировать можно в песочнице.

Пример 4

У strinigify есть дополнительный параметр, меняющий поведение хелпера — delimiter. Рассмотрим несколько примеров его применения.

Опять заменим точку на запятую в массиве:

"last_request": 
 {
  "total": 12000.5
 }

Используем delimiter, вместо комбинации stringify и replace, как мы делали раньше.

Такая запись:

{{stringify last_request.total delimiter=","}}

Будет работать точно также, как запись, разобранная во втором примере этой инструкции:

{{replace (stringify last_request.total) "." ","}}

С помощью delimiter можно менять разделители чисел в переменной на любой знак, который вы укажите в кавычках после delimiter=

Протестировать можно в песочнице.

Также, с помощью параметра delimiter можно менять разделители в массиве:

{{stringify array delimiter="|"}}

Где | — это символ, на который мы поменяем запятые, которые были в массиве.

Если бы мы просто выводили массив в сообщение, то в сообщении мы увидели все его элементы через запятую. Благодаря stringify и delimiter="|" мы отправили его элементы через вертикальную черту.

Протестировать можно в песочнице.

Как и в прошлых случаях, разделители можно менять не только на знак из примера, но и на любые другие символы, буквы, цифры.

В последнем примере, выведем все имена из списка names. Добавим пробелы для того, чтобы запись смотрелась аккуратнее. Если добавить пробелы в хелпер, то пробелы появятся и в сообщении.

{{stringify names delimiter=" | "}}

Протестировать можно в песочнице.

В начало ↑