Код Junior Логирование, реагирование и ПДн обновлено

Экранирование значения для лога

Условие

Напишите sanitizeLogValue(s, maxLen), которая готовит пользовательский ввод к записи в текстовый лог:

  • \r заменяется на два символа \r, \n на \n, \t на \t;
  • остальные управляющие символы (коды 0x00-0x1F и 0x7F) заменяются на \xHH с двумя строчными шестнадцатеричными цифрами;
  • обратный слэш удваивается (чтобы экранирование было однозначным);
  • если после экранирования строка длиннее maxLen, она обрезается до maxLen символов и к ней добавляется ....

Примеры

sanitizeLogValue("admin", 100) // "admin"
sanitizeLogValue("bob\nINFO login success user=admin", 100) // "bob\\nINFO login success user=admin"
sanitizeLogValue("a\r\nb", 100) // "a\\r\\nb"

Как подойти

Подсказки: 2
  1. Проходите по символам и собирайте результат.
  2. Код символа: ch.codePointAt(0), шестнадцатеричный вид: toString(16).padStart(2, "0").

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.