Преобразование текста
ТекстМенять регистр и стиль имён, ширину символов и порядок текста.
На этой странице
Что такое инструмент преобразования текста?#
Инструмент преобразования текста переписывает строку по фиксированному правилу — меняет регистр, переключает конвенцию именования, обращает полуширинные и полноширинные формы или переворачивает символы. Большинство этих задач в голове укладываются в строчку — пока не попробуете сделать их реально: «преобразуй этот заголовок в kebab-case» очевидно для Content Type, но неоднозначно для HTTPServer, getUserById_v2 или X-Rate-Limit-Remaining. Какие части считать словами? Где проходят границы?
Этот инструмент отвечает единым, предсказуемым делителем слов. Он нормализует разделители (подчёркивание, дефис, пробел, знак препинания), затем вставляет границы в стыках camelCase и PascalCase, в стыках акронима-слово (HTTPServer → HTTP Server) и в стыках буква-цифра (v2 → v 2). Полученные токены питают двенадцать операций: пять конвенций именования (camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE), четыре буквенных регистра (ВЕРХНИЙ, нижний, Заголовочный, Предложения), преобразование восточно-азиатской ширины (полу ↔ полная) и переворот. Переворот идёт по кодовым точкам Unicode, поэтому эмодзи и прочие суррогатные пары остаются целыми, а не превращаются в половинки.
Как пользоваться#
- Выберите Операцию из выпадающего списка на панели инструментов. Двенадцать вариантов логически сгруппированы: сначала конвенции именования, затем буквенные регистры, затем преобразование ширины, затем переворот.
- Введите или вставьте текст в панель Ввод слева или нажмите Пример, чтобы загрузить вариант, проверяющий делитель.
- Читайте результат в панели Вывод справа — она обновляется, как только меняется ввод или выбранная операция.
- Нажмите Копировать в шапке вывода, чтобы забрать преобразованную строку, или Очистить, чтобы начать заново.
Операции тотальны: пустой ввод даёт пустой вывод, и никакая операция не может выбросить исключение. Переключение списка мгновенно прогоняет тот же ввод через новое правило, что делает этот инструмент быстрым способом сравнить, скажем, snake_case с kebab-case для одного идентификатора.
Ключевые возможности#
- Один делитель, двенадцать выводов. Одни и те же границы слов питают каждую конвенцию именования, поэтому
getUserById_v2последовательно даётgetUserByIdV2/GetUserByIdV2/get_user_by_id_v2/get-user-by-id-v2/GET_USER_BY_ID_V2. - Разделение с учётом акронимов.
HTTPServerразбивается наHTTP+Server, а не наHTTPServer, — распознанный шаблон (серия заглавных плюс слово с заглавной и строчной) сохраняет акронимы читаемыми. - Границы буква-цифра.
v2превращается в два токена, поэтомуversion2slugируется чисто, а не приклеивает цифру к слову. - Преобразование восточно-азиатской ширины. Полуширинный ASCII
Hello 123становится полношириннымHello 123(пробел включён), а обратная операция восстанавливает ASCII — удобно при заполнении восточно-азиатских форм или выравнивании CJK-текста. - Переворот по кодовым точкам. Переворот
a😀bдаётb😀a, а не сломанный эмодзи, — делитель идёт по кодовым точкам, а не по UTF-16 единицам. - Локально и мгновенно. Никакой сети, никакой загрузки; каждое преобразование — чистая строковая арифметика на странице.
Разбор примера#
Вставьте человекочитаемую подпись:
user first name
Переключайте операцию по пяти конвенциям именования и наблюдайте панель вывода:
- camelCase →
userFirstName - PascalCase →
UserFirstName - snake_case →
user_first_name - kebab-case →
user-first-name - CONSTANT_CASE →
USER_FIRST_NAME
Теперь попробуйте более грязный идентификатор, смешивающий конвенции:
HTTPServer v2
Поскольку делитель распознаёт границу HTTP + Server и границу v + 2, вывод остаётся читаемым, а не схлопывается в httpservver-v2:
- kebab-case →
http-server-v-2 - snake_case →
http_server_v_2 - CONSTANT_CASE →
HTTP_SERVER_V_2
В этом и разница между преобразованием, которое реально понимает структуру идентификатора, и тем, что просто переводит в нижний регистр и соединяет разделителем.
FAQ#
Почему HTTPServer не превращается в h-t-t-p-server?#
Потому что делитель трактует серию заглавных плюс слово с заглавной и строчной как акроним плюс слово. HTTPServer читается как HTTP + Server — почти всегда то, что вы и имели в виду. Наивный делитель, разрезающий по каждой заглавной, выдал бы нечитаемые слаги вроде h-t-t-p-server.
В чём разница между Регистром Заголовка и Регистром Предложения?#
Регистр Заголовка (Title Case) делает первую букву каждого слова, отделённого пробелами (the quick fox → The Quick Fox), что правильно для заголовков и названий книг. Регистр Предложения (Sentence Case) делает прописной только первый буквенный символ всей строки (the quick fox → The quick fox), что правильно для прозы и предложений. Выбирайте в зависимости от того, чем текст реально является.
Когда нужно преобразование полуширина ↔ полная ширина?#
Восточно-азиатская типографика и некоторые государственные/деловые формы требуют полноширинных латинских букв и цифр (ABC123) для визуального выравнивания с CJK-символами. И наоборот, текст, скопированный из японского источника, часто приходит в полноширинной форме и нуждается в восстановлении до ASCII, прежде чем его примет regex или разборщик кода. Эти две операции — точные обращения друг друга.
Правильно ли переворот обрабатывает эмодзи?#
Да. Операция итерирует по кодовым точкам Unicode (через Array.from), а не по UTF-16 единицам, поэтому символ вне основной многоязычной плоскости — эмодзи вроде 😀, редкий CJK-идеограф или математический символ — переворачивается как одно целое. Переворот abc😀def даёт fed😀cba, с эмодзи без потерь.
Пригодится ли это для пакетного переименования файлов или переменных?#
Для одного идентификатора — да: вставьте, выберите конвенцию, скопируйте. Для пакетной работы обычно пишут скрипт, но эта страница — быстрый способ уточнить, какой именно вывод даёт конвенция, прежде чем пускать её в regex или codemod, особенно для неловких смешанно-регистровых вводов, где легко нарваться на баг.