Что такое преобразование регистра текста?
Преобразование регистра текста принимает входную строку и выводит те же слова, но в другой конвенции буквенного регистра. Наиболее распространённые цели — camelCase и PascalCase (используются для идентификаторов в большинстве языков с фигурными скобками), snake_case и CONSTANT_CASE (Python, Ruby, Rust, макросы C), kebab-case (URL, имена классов CSS, атрибуты HTML, имена npm-пакетов), dot.case (ключи конфигурации, пути JavaScript-объектов), path/case (идентификаторы в стиле файловой системы), Title Case и Sentence case (заголовки и проза), плюс полный lower case и UPPER CASE. Этот конвертер определяет естественные границы слов в вашем вводе — пробелы, дефисы, подчёркивания, точки, слеши, а также переходы lowercase→uppercase, которые отмечают идентификаторы вида helloWorld, — и собирает их с разделителями и шаблоном капитализации, которые требует каждый целевой регистр.
Как работает преобразование регистра?
Ваш ввод обрабатывается полностью в вашем браузере небольшим vanilla-JavaScript-токенизатором и одиннадцатью форматтерами регистра. Высокоуровневые шаги:
- Ваш ввод считывается дословно из текстового поля — каждый байт, который вы вставили, хранится в памяти локально.
- Токенизатор разбивает ввод по пробелам, подчёркиваниям, дефисам, точкам и слешам, а затем дополнительно разбивает каждый фрагмент по границам lowercase→uppercase (так что
helloWorldстановится["hello", "World"]) и по границам буква↔цифра (так чтоv2APIстановится["v", "2", "API"]). - Пустые токены отфильтровываются, а выжившие токены приводятся к нижнему регистру с помощью
String.prototype.toLocaleLowerCase, чтобы юникодные буквы в турецком, немецком и других локалях были сохранены корректно. - Одиннадцать форматтеров затем собирают токены в каждый целевой регистр по очереди — camelCase, PascalCase, snake_case, CONSTANT_CASE, kebab-case, dot.case, path/case, Title Case (со списком малых слов, чтобы
and,the,ofи т. д. оставались в нижнем регистре, кроме первого или последнего слова), Sentence case, полный lower case и полный UPPER CASE. - Вывод записывается по одной строке на регистр в сетке результатов; у каждой строки своя кнопка копирования, использующая асинхронный Clipboard API с синхронным запасным вариантом
document.execCommand('copy')для старых браузеров.
Зачем использовать конвертер регистра?
- Рефакторинг идентификаторов: переименуйте JavaScript-переменную с
user_idнаuserId, Python-функцию сhelloWorldнаhello_worldили Rust-константу сmaxBufferнаMAX_BUFFERбез ручной правки по одному символу. - Преобразование ключей конфигурации: переключите JSON-конфиг, полный camelCase-ключей, в snake_case YAML для Python-сервиса или в kebab-case для Helm-чарта одной вставкой.
- Написание заголовков: вставьте черновик заголовка и прочитайте его в Title Case (с исключениями для малых слов по Chicago Manual of Style) рядом с формой Sentence case (AP Stylebook) — выберите ту, которую использует ваше издание.
- Генерация URL-слугов: вставьте заголовок блог-поста и скопируйте kebab-case-форму прямо в поле слуга вашей CMS — токенизатор справляется с пунктуацией и многословными фразами, не оставляя лишних разделителей.
Каковы типичные применения преобразования регистра?
Переключение между конвенциями буквенного регистра встречается в программной инженерии, создании контента и инженерии данных:
- Рефакторинг кода: переименование идентификаторов в кодовой базе при смене руководства по стилю (например, JavaScript camelCase → Python snake_case при переписывании бэкенда) без опечаток.
- Переоформление полезных нагрузок API: преобразование camelCase-ключей JSON в snake_case перед передачей в Ruby on Rails или Django-бэкенд, либо в kebab-case для имени CSS-in-JS-класса.
- Создание заголовков и слугов: получите Title Case заголовки страниц, Sentence case мета-описания и kebab-case URL-слуги из одного и того же исходного заголовка в один шаг.
Как выглядит пример преобразования регистра?
Вставьте Hello World API на вход. Сетка результатов отображает одиннадцать строк одновременно: helloWorldApi (camelCase), HelloWorldApi (PascalCase), hello_world_api (snake_case), HELLO_WORLD_API (CONSTANT_CASE), hello-world-api (kebab-case), hello.world.api (dot.case), hello/world/api (path/case), Hello World Api (Title Case), Hello world api (Sentence case), hello world api (lower case) и HELLO WORLD API (UPPER CASE). Тот же ввод, вставленный как helloWorldAPI, токенизируется в те же три слова — детектор границы lowercase→uppercase справляется и с такой формой.
Работает ли это в моём браузере?
Да. Токенизатор и одиннадцать форматтеров регистра — это около 120 строк vanilla-JavaScript, выполняющихся внутри вкладки браузера. Ничего не загружается, никакой service worker не проксирует ваш ввод, и страница не делает ни одного сетевого запроса для самого шага преобразования. Единственный исходящий трафик — стандартные ресурсы загрузки страницы (CSS, шрифты, аналитика) — ваш текст никогда не достигает Ultim8Soft.
Какой формат регистра использовать для имён переменных?
Это зависит от языка и руководства по стилю команды. Кодовые базы JavaScript и TypeScript подавляющим большинством используют camelCase для переменных и функций, PascalCase для классов и React-компонентов и CONSTANT_CASE для имён переменных окружения и констант уровня модуля — руководства по стилю Google JavaScript и Airbnb закрепляют эти выборы. Python (PEP 8), Ruby и Rust предпочитают snake_case для переменных и функций, PascalCase для классов и CONSTANT_CASE для констант уровня модуля. Кодовые базы C и C++ (ядро Linux, LLVM) опираются на snake_case для функций и CONSTANT_CASE для препроцессорных макросов. Когда сомневаетесь, запустите линтер или форматтер вашей команды — он подскажет, какая конвенция применяется.
Как токенизируется ввод?
Токенизатор сначала разбивает ввод по любой последовательности пробелов, подчёркивания (_), дефиса (-), точки (.) или слеша (/). Каждый получившийся фрагмент затем снова разбивается по границам lowercase→uppercase (так что helloWorld становится ["hello", "World"]) и по границам буква↔цифра (так что v2API становится ["v", "2", "API"]). Пустые токены отфильтровываются, а выжившие токены приводятся к нижнему регистру через String.prototype.toLocaleLowerCase. Форматтеры затем заново капитализируют и пересоединяют токены с разделителем, который требует каждый целевой регистр. Стратегия обрабатывает все шесть распространённых форм идентификаторов — camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE и обычную прозу, разделённую пробелами, — из коробки.
А что насчёт Unicode / не-ASCII символов?
Юникодные буквы выживают круговую поездку. Токенизатор использует String.prototype.toLocaleLowerCase и toLocaleUpperCase, которые соблюдают локальные правила регистра — турецкие точечные и беспоинтные i, верхний регистр немецкой ß в SS, акцентированные латинские буквы во французском и испанском и т. д. Не-буквенные символы, НЕ входящие в набор разделителей (пробельные, _, -, ., /) — например цифры, акцентированные буквы или CJK-символы — сохраняются внутри токена, в котором они появляются, и форматтеры регистра выводят их дословно. Это означает, что ввод вида nœud_principal токенизируется в ["nœud", "principal"] и чисто преобразуется в nœudPrincipal (camelCase) или NœudPrincipal (PascalCase).
Этот конвертер регистра — одна статическая страница, которая выполняет токенизатор и одиннадцать форматтеров полностью в вашем браузере — без вендорной библиотеки, без сетевого вызова на каждое преобразование, без аккаунта. Вставьте любой текст выше, просмотрите одиннадцать выходов регистра бок о бок и скопируйте тот, который вам нужен.