Как перевести camelCase в snake_case и обратно
Короткий ответ
Найдите каждую заглавную букву и поставьте перед ней подчёркивание:
const snake = 'firstName'.replace(/[A-Z]/g, (letter) => '_' + letter.toLowerCase());
console.log(snake);Результат:
first_namekebab-case
Для CSS-классов и адресов вместо подчёркивания используют дефис:
const kebab = 'backgroundColor'.replace(/[A-Z]/g, (letter) => '-' + letter.toLowerCase());
console.log(kebab);Результат:
background-colorОбратно в camelCase
Найдите подчёркивание или дефис с буквой после них и замените пару заглавной буквой:
const toCamel = (text) => text.replace(/[_-]([a-z])/g, (match, letter) => letter.toUpperCase());
console.log(toCamel('user_last_login'));
console.log(toCamel('font-size'));Результат:
userLastLogin
fontSizeЧастая ошибка
Без флага g заменяется только первое совпадение:
console.log('userLastLogin'.replace(/[A-Z]/, (letter) => '_' + letter.toLowerCase()));Результат:
user_lastLoginФункции из этого ответа
- String.prototype.replace — Заменяет первое совпадение (или все — с флагом g у регулярного выражения).
- String.prototype.toLowerCase — Переводит строку в нижний регистр.