Как переводить число в строку и заменять разделители
Разберем несколько примеров, используя такие переменные в списке:
{ "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=" | "}}
Протестировать можно в песочнице.