Инструменты
Руководства

Преобразование текста

Текст

Менять регистр и стиль имён, ширину символов и порядок текста.

100 % на клиенте Без бэкенда
Ввод
Вывод
На этой странице

Что такое инструмент преобразования текста?#

Инструмент преобразования текста переписывает строку по фиксированному правилу — меняет регистр, переключает конвенцию именования, обращает полуширинные и полноширинные формы или переворачивает символы. Большинство этих задач в голове укладываются в строчку — пока не попробуете сделать их реально: «преобразуй этот заголовок в kebab-case» очевидно для Content Type, но неоднозначно для HTTPServer, getUserById_v2 или X-Rate-Limit-Remaining. Какие части считать словами? Где проходят границы?

Этот инструмент отвечает единым, предсказуемым делителем слов. Он нормализует разделители (подчёркивание, дефис, пробел, знак препинания), затем вставляет границы в стыках camelCase и PascalCase, в стыках акронима-слово (HTTPServerHTTP Server) и в стыках буква-цифра (v2v 2). Полученные токены питают двенадцать операций: пять конвенций именования (camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE), четыре буквенных регистра (ВЕРХНИЙ, нижний, Заголовочный, Предложения), преобразование восточно-азиатской ширины (полу ↔ полная) и переворот. Переворот идёт по кодовым точкам Unicode, поэтому эмодзи и прочие суррогатные пары остаются целыми, а не превращаются в половинки.

Как пользоваться#

  1. Выберите Операцию из выпадающего списка на панели инструментов. Двенадцать вариантов логически сгруппированы: сначала конвенции именования, затем буквенные регистры, затем преобразование ширины, затем переворот.
  2. Введите или вставьте текст в панель Ввод слева или нажмите Пример, чтобы загрузить вариант, проверяющий делитель.
  3. Читайте результат в панели Вывод справа — она обновляется, как только меняется ввод или выбранная операция.
  4. Нажмите Копировать в шапке вывода, чтобы забрать преобразованную строку, или Очистить, чтобы начать заново.

Операции тотальны: пустой ввод даёт пустой вывод, и никакая операция не может выбросить исключение. Переключение списка мгновенно прогоняет тот же ввод через новое правило, что делает этот инструмент быстрым способом сравнить, скажем, 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, а не на H T T P Server, — распознанный шаблон (серия заглавных плюс слово с заглавной и строчной) сохраняет акронимы читаемыми.
  • Границы буква-цифра. v2 превращается в два токена, поэтому version2 slugируется чисто, а не приклеивает цифру к слову.
  • Преобразование восточно-азиатской ширины. Полуширинный ASCII Hello 123 становится полноширинным Hello 123 (пробел включён), а обратная операция восстанавливает ASCII — удобно при заполнении восточно-азиатских форм или выравнивании CJK-текста.
  • Переворот по кодовым точкам. Переворот a😀b даёт b😀a, а не сломанный эмодзи, — делитель идёт по кодовым точкам, а не по UTF-16 единицам.
  • Локально и мгновенно. Никакой сети, никакой загрузки; каждое преобразование — чистая строковая арифметика на странице.

Разбор примера#

Вставьте человекочитаемую подпись:

user first name

Переключайте операцию по пяти конвенциям именования и наблюдайте панель вывода:

  • camelCaseuserFirstName
  • PascalCaseUserFirstName
  • snake_caseuser_first_name
  • kebab-caseuser-first-name
  • CONSTANT_CASEUSER_FIRST_NAME

Теперь попробуйте более грязный идентификатор, смешивающий конвенции:

HTTPServer v2

Поскольку делитель распознаёт границу HTTP + Server и границу v + 2, вывод остаётся читаемым, а не схлопывается в httpservver-v2:

  • kebab-casehttp-server-v-2
  • snake_casehttp_server_v_2
  • CONSTANT_CASEHTTP_SERVER_V_2

В этом и разница между преобразованием, которое реально понимает структуру идентификатора, и тем, что просто переводит в нижний регистр и соединяет разделителем.

FAQ#

Почему HTTPServer не превращается в h-t-t-p-server?#

Потому что делитель трактует серию заглавных плюс слово с заглавной и строчной как акроним плюс слово. HTTPServer читается как HTTP + Server — почти всегда то, что вы и имели в виду. Наивный делитель, разрезающий по каждой заглавной, выдал бы нечитаемые слаги вроде h-t-t-p-server.

В чём разница между Регистром Заголовка и Регистром Предложения?#

Регистр Заголовка (Title Case) делает первую букву каждого слова, отделённого пробелами (the quick foxThe Quick Fox), что правильно для заголовков и названий книг. Регистр Предложения (Sentence Case) делает прописной только первый буквенный символ всей строки (the quick foxThe quick fox), что правильно для прозы и предложений. Выбирайте в зависимости от того, чем текст реально является.

Когда нужно преобразование полуширина ↔ полная ширина?#

Восточно-азиатская типографика и некоторые государственные/деловые формы требуют полноширинных латинских букв и цифр (ABC123) для визуального выравнивания с CJK-символами. И наоборот, текст, скопированный из японского источника, часто приходит в полноширинной форме и нуждается в восстановлении до ASCII, прежде чем его примет regex или разборщик кода. Эти две операции — точные обращения друг друга.

Правильно ли переворот обрабатывает эмодзи?#

Да. Операция итерирует по кодовым точкам Unicode (через Array.from), а не по UTF-16 единицам, поэтому символ вне основной многоязычной плоскости — эмодзи вроде 😀, редкий CJK-идеограф или математический символ — переворачивается как одно целое. Переворот abc😀def даёт fed😀cba, с эмодзи без потерь.

Пригодится ли это для пакетного переименования файлов или переменных?#

Для одного идентификатора — да: вставьте, выберите конвенцию, скопируйте. Для пакетной работы обычно пишут скрипт, но эта страница — быстрый способ уточнить, какой именно вывод даёт конвенция, прежде чем пускать её в regex или codemod, особенно для неловких смешанно-регистровых вводов, где легко нарваться на баг.