Case Converter

Конвертируйте текст между UPPERCASE, lowercase, title case, camelCase, snake_case и другими форматами

Попробовать пример

Ввод

Вывод

Работает локально · Безопасно вставлять секреты
Результат конвертации появится здесь…

Что такое конвертация регистра текста?

Конвертация регистра текста — это процесс изменения написания букв или шаблона разделения слов в строке. Конвертер регистра принимает входные данные вида "hello world" и преобразует их в UPPERCASE, lowercase, Title Case, camelCase, snake_case, kebab-case или другие соглашения. Для простого ASCII-текста преобразование прямолинейно, однако в граничных случаях возникают сложности: аббревиатуры ("XMLParser"), правила, зависящие от локали (турецкая заглавная I с точкой), и строки со смешанным алфавитом.

Языки программирования, файловые системы и руководства по стилю применяют собственные соглашения об именовании. Переменные в JavaScript, как правило, используют camelCase. Функции и переменные в Python следуют snake_case согласно PEP 8. Имена классов CSS используют kebab-case. Столбцы баз данных варьируются в зависимости от команды, но snake_case доминирует в PostgreSQL и MySQL. Переключение между этими соглашениями вручную — медленное и чреватое ошибками занятие, особенно при переименовании в десятках файлов.

Соглашения о регистре важны и за пределами кода. Title Case следует правилам руководств по стилю — Chicago Manual of Style и APA — согласно которым артикли и короткие предлоги остаются строчными, если не стоят в начале предложения. Sentence case делает заглавной только первую букву и имена собственные. В американской издательской практике Title Case принят для заголовков; большинство европейских и технических документаций использует Sentence case.

Зачем использовать этот Case Converter?

Вставьте любой текст и мгновенно конвертируйте его в девять форматов регистра — без установки расширений VS Code и без написания одноразовых скриптов.

Мгновенная конвертация
Выберите формат регистра и сразу увидите результат. Никаких обращений к серверу, никакого ожидания. Переключайтесь между форматами и сравнивайте вывод параллельно.
🔒
Обработка с приоритетом конфиденциальности
Все преобразования выполняются в браузере с помощью JavaScript. Ваш текст остаётся на вашем устройстве. Ничего не отправляется на сервер и не сохраняется.
🔄
Девять форматов в одном инструменте
UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, kebab-case и CONSTANT_CASE. Один ввод охватывает все распространённые соглашения.
🌍
Без регистрации
Откройте страницу и начните конвертировать. Никакой регистрации, никаких расширений для браузера, никакой установки на компьютер. Работает на любом устройстве с современным браузером.

Сценарии использования Case Converter

Фронтенд-разработка
Конвертируйте имена пропсов компонентов из snake_case ответов API в camelCase для объектов JavaScript. Переименовывайте классы CSS с camelCase на kebab-case при переходе на систему именования BEM или utility-first.
Проектирование серверного API
Переводите имена полей между соглашениями при маппинге столбцов базы данных (snake_case) в ключи JSON-ответа (camelCase). Проверяйте, что слои сериализации производят ожидаемый формат вывода.
DevOps и инфраструктура
Генерируйте имена переменных окружения в формате CONSTANT_CASE из описательных фраз. Конвертируйте имена ресурсов Terraform между snake_case и kebab-case при согласовании с руководством по стилю команды.
QA и автоматизация тестирования
Подготавливайте тестовые данные с правильно оформленными именами полей. Выявляйте несоответствия регистра между API-контрактами и ожиданиями клиента до выхода в продакшн.
Инженерия данных
Нормализуйте заголовки столбцов при импорте CSV- или Excel-файлов в базу данных. Конвертируйте заголовки в смешанном регистре, например "First Name", в столбцы snake_case вида "first_name" для единообразного проектирования схемы.
Техническое писательство и документация
Форматируйте ссылки на код в документации с правильным регистром. Конвертируйте описания на естественном языке в имена классов PascalCase или URL-слаги kebab-case для единообразия в технических спецификациях.

Справочник по соглашениям регистра

Каждое соглашение об именовании имеет конкретные правила капитализации и разделения слов. В таблице ниже приведены все девять форматов, поддерживаемых этим инструментом, на примере фразы "the quick brown fox".

ФорматПравилоПример
UPPERCASEEvery letter capitalizedTHE QUICK BROWN FOX
lowercaseEvery letter lowercasedthe quick brown fox
Title CaseFirst letter of each word capitalizedThe Quick Brown Fox
Sentence caseFirst letter of each sentence capitalizedThe quick brown fox
camelCaseNo separators, first word lowercasetheQuickBrownFox
PascalCaseNo separators, every word capitalizedTheQuickBrownFox
snake_caseWords joined by underscores, all lowercasethe_quick_brown_fox
kebab-caseWords joined by hyphens, all lowercasethe-quick-brown-fox
CONSTANT_CASEWords joined by underscores, all uppercaseTHE_QUICK_BROWN_FOX

camelCase vs snake_case vs kebab-case

Эти три соглашения доминируют в разработке программного обеспечения, но каждое принадлежит своей экосистеме. Использование неподходящего варианта ломает линтеры, нарушает API-контракты или приводит к непоследовательной кодовой базе.

camelCase
Стандарт для переменных, имён функций и ключей объектов в JavaScript и TypeScript. Java и C# используют camelCase для локальных переменных и параметров методов. JSON API, ориентированные на JavaScript-клиентов, как правило, применяют ключи в camelCase. Первое слово — строчное, каждое последующее начинается с заглавной буквы.
snake_case
Стандарт по умолчанию для Python (PEP 8), Ruby, Rust и большинства баз данных SQL. Функции стандартной библиотеки C также следуют этому шаблону. Слова разделяются символом подчёркивания, все буквы строчные. CONSTANT_CASE (все заглавные с подчёркиваниями) — вариант, используемый для констант и переменных окружения.
kebab-case
Стандарт для имён классов CSS, атрибутов HTML, URL-слагов и имён флагов CLI (--output-dir). Распространён в Lisp и Clojure. Слова разделяются дефисами, все буквы строчные. Большинство языков программирования не допускают дефисы в идентификаторах, поэтому kebab-case ограничен строками, именами файлов и разметкой.

Примеры кода

Как программно конвертировать между соглашениями регистра. Каждый пример охватывает наиболее распространённые преобразования: camelCase в snake_case, snake_case в camelCase и базовые преобразования upper/lower/title.

JavaScript
// camelCase → snake_case
function toSnakeCase(str) {
  return str
    .replace(/([a-z])([A-Z])/g, '$1_$2')
    .replace(/[\s-]+/g, '_')
    .toLowerCase()
}
toSnakeCase('myVariableName')  // → "my_variable_name"
toSnakeCase('kebab-case-str')  // → "kebab_case_str"

// snake_case → camelCase
function toCamelCase(str) {
  return str
    .toLowerCase()
    .replace(/[_-](\w)/g, (_, c) => c.toUpperCase())
}
toCamelCase('my_variable_name')  // → "myVariableName"

// Title Case
function toTitleCase(str) {
  return str.replace(/\w\S*/g, w =>
    w.charAt(0).toUpperCase() + w.slice(1).toLowerCase()
  )
}
toTitleCase('the quick brown fox')  // → "The Quick Brown Fox"
Python
import re

text = "the quick brown fox"

# UPPERCASE / lowercase
text.upper()  # → "THE QUICK BROWN FOX"
text.lower()  # → "the quick brown fox"

# Title Case
text.title()  # → "The Quick Brown Fox"

# camelCase
def to_camel(s):
    words = re.split(r'[\s_-]+', s)
    return words[0].lower() + ''.join(w.capitalize() for w in words[1:])

to_camel("my_variable_name")  # → "myVariableName"

# snake_case from camelCase
def to_snake(s):
    return re.sub(r'([a-z])([A-Z])', r'\1_\2', s).lower()

to_snake("myVariableName")  # → "my_variable_name"

# kebab-case
def to_kebab(s):
    return re.sub(r'([a-z])([A-Z])', r'\1-\2', s).replace('_', '-').lower()

to_kebab("myVariableName")  # → "my-variable-name"
Go
package main

import (
	"fmt"
	"regexp"
	"strings"
)

// camelCase → snake_case
func toSnake(s string) string {
	re := regexp.MustCompile("([a-z])([A-Z])")
	snake := re.ReplaceAllString(s, "${1}_${2}")
	return strings.ToLower(snake)
}

// snake_case → camelCase
func toCamel(s string) string {
	parts := strings.Split(strings.ToLower(s), "_")
	for i := 1; i < len(parts); i++ {
		parts[i] = strings.Title(parts[i])
	}
	return strings.Join(parts, "")
}

func main() {
	fmt.Println(toSnake("myVariableName"))  // → my_variable_name
	fmt.Println(toCamel("my_variable_name")) // → myVariableName
	fmt.Println(strings.ToUpper("hello"))    // → HELLO
	fmt.Println(strings.ToUpper("hello world")) // → HELLO WORLD
}
CLI (bash / sed)
# UPPERCASE
echo "hello world" | tr '[:lower:]' '[:upper:]'
# → HELLO WORLD

# lowercase
echo "HELLO WORLD" | tr '[:upper:]' '[:lower:]'
# → hello world

# camelCase → snake_case (using sed)
echo "myVariableName" | sed 's/\([a-z]\)\([A-Z]\)/\1_\2/g' | tr '[:upper:]' '[:lower:]'
# → my_variable_name

# snake_case → kebab-case
echo "my_variable_name" | tr '_' '-'
# → my-variable-name

Часто задаваемые вопросы

В чём разница между camelCase и PascalCase?
camelCase начинается со строчной буквы (myVariable), тогда как PascalCase начинается с заглавной (MyVariable). В JavaScript camelCase используется для переменных и функций, PascalCase — для имён классов и компонентов React. В C# PascalCase применяется для публичных методов и свойств. Единственное структурное отличие — первый символ.
Как конвертировать camelCase в snake_case в JavaScript?
Вставьте символ подчёркивания перед каждой заглавной буквой с помощью регулярного выражения, затем переведите результат в нижний регистр: str.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase(). Это работает для стандартного camelCase. Для строк с последовательными заглавными буквами, например "XMLParser", потребуется дополнительный проход регулярного выражения для корректного разбиения последовательностей заглавных.
Почему Python использует snake_case вместо camelCase?
PEP 8, официальное руководство по стилю Python, опубликованное в 2001 году, выбрало snake_case для функций и переменных, поскольку Гвидо ван Россум и основная команда посчитали его более читаемым с первого взгляда. Исследования, в частности работа Binkley et al. (2009), показали, что идентификаторы в snake_case распознавались программистами быстрее, чем camelCase в определённых задачах чтения. Соглашение применяется линтерами — flake8 и pylint.
Title Case — это то же самое, что написать каждое слово с заглавной буквы?
Простой Title Case делает заглавной первую букву каждого слова — именно это делает данный инструмент. Формальный Title Case (AP, Chicago, APA) имеет дополнительные правила: артикли (a, an, the), короткие союзы (and, but, or) и короткие предлоги (in, on, at) остаются строчными, если не стоят в начале или конце предложения. Формальная расстановка регистра в заголовках требует словарного поиска, а не простого посимвольного преобразования.
Умеет ли инструмент работать с Unicode и нелатинскими алфавитами?
Инструмент использует встроенные методы JavaScript toUpperCase() и toLowerCase(), которые следуют правилам регистра Unicode, определённым в стандарте Unicode (глава 3, раздел 3.13). Это корректно обрабатывает символы с диакритикой (é в É), немецкое эсцет (ss в SS) и греческие буквы. Однако правила, зависящие от локали, — например, турецкий регистр (где строчная i должна переходить в İ с точкой, а не в I) — зависят от языковых настроек браузера, а не от инструмента.
Для чего используется CONSTANT_CASE?
CONSTANT_CASE (также называемый SCREAMING_SNAKE_CASE) используется для констант и переменных окружения. В JavaScript: const MAX_RETRIES = 3. В Python: MAX_RETRIES = 3 (по соглашению, поскольку в Python нет настоящих констант). В shell-скриптах: export DATABASE_URL=.... Написание всего в верхнем регистре сигнализирует, что значение не должно переприсваиваться после инициализации.
Как выбрать правильное соглашение регистра для своего проекта?
Следуйте доминирующему соглашению для вашего языка и фреймворка. JavaScript/TypeScript: camelCase для переменных, PascalCase для классов и компонентов. Python: snake_case для функций и переменных, PascalCase для классов. CSS: kebab-case. SQL: snake_case для столбцов и таблиц. Ключи JSON в REST API: совпадают с языком фронтенда (camelCase для JS-клиентов, snake_case для Python-клиентов). В случае сомнений — проверьте конфигурацию линтера или файл .editorconfig в корне проекта.