Код 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
- Проходите по символам и собирайте результат.
- Код символа:
ch.codePointAt(0), шестнадцатеричный вид:toString(16).padStart(2, "0").
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.