Convertir mayúsculas y minúsculas
El conversor de mayúsculas y minúsculas reescribe identificadores entre camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE y nueve más, en tu navegador. La conversión es trivial; la parte difícil es dividir la entrada en palabras — XMLHttpRequest son tres palabras, user2fa son tres, y un conversor que se equivoque en eso produce una salida que nadie quiere.
¿Cómo funciona Convertir mayúsculas y minúsculas?
Toda convención de nombres es la misma lista de palabras representada de otra forma, así que convertir entre ellas es un solo problema — dividir la entrada en palabras — seguido de una unión trivial. Los conversores difieren por completo en el primer paso.
Tres límites entre palabras, ordenados según la frecuencia con que se pasan por alto
Una transición de minúscula a mayúscula es la obvia: userName son dos palabras. Una sigla seguida de una palabra es la que más conversores hacen mal: XMLHttpRequest es XML Http Request, y no una palabra ni ocho. Una transición de letra a dígito es la que nadie tiene en cuenta: user2fa es user 2 fa, que es la razón por la que user2fa se convierte en user_2_fa en lugar de user2fa.
Los separadores — espacio, guion bajo, guion, punto, barra — se tratan todos por igual, y eso es lo que permite que la herramienta acepte la entrada en cualquier convención sin que se lo digas. No eliges un formato de origen, porque no hay nada que elegir.
La i turca
"I".toLocaleLowerCase() da "ı" — una i sin punto — en turco y azerí, y no "i". Eso es correcto para esas lenguas y catastrófico para el código: toda comparación que no distingue mayúsculas de minúsculas contra una cadena ASCII falla, y un identificador llamado ID se convierte en algo que un compilador no reconoce. Por eso aquí las mayúsculas y minúsculas se manejan por defecto de forma independiente de la configuración regional, y el modo que sí la tiene en cuenta queda disponible para la prosa, donde es la respuesta correcta.
Los estilos de prosa cambian las mayúsculas, no la estructura
Sentence case y Title case operan sobre el texto y no sobre sus palabras: la puntuación, los espacios y las siglas existentes sobreviven. Title case mantiene en minúsculas las palabras menores — a, an, the, of, to y el resto — salvo si son la primera o la última, que es la regla que comparten la mayoría de las guías de estilo del inglés aunque discrepen sobre la lista.
Conservar las siglas es una decisión genuina
user_id a PascalCase es UserId o UserID según las convenciones de tu lenguaje — la guía de estilo de Go exige el segundo, y la de C# exige el primero para las siglas de dos letras y el primero para las más largas. Ninguno está mal, así que es un conmutador y no una decisión tomada por ti.
Entrada
XMLHttpRequest
Convertido
words XML | Http | Request camelCase xmlHttpRequest snake_case xml_http_request CONSTANT XML_HTTP_REQUEST kebab-case xml-http-request
¿Qué opciones y casos límite admite Convertir mayúsculas y minúsculas?
| Parámetro | Tipo | Valor predeterminado | Comportamiento y casos límite |
|---|---|---|---|
| camelCase | camel | userFirstName | Variables y funciones de JavaScript y Java. Primera palabra en minúscula, el resto con mayúscula inicial. |
| PascalCase | pascal | UserFirstName | Nombres de tipos en casi todos los lenguajes: clases, interfaces, componentes de React. |
| snake_case | snake | user_first_name | Identificadores de Python y Ruby, y nombres de columnas SQL en Postgres. |
| CONSTANT_CASE | constant | USER_FIRST_NAME | Variables de entorno y constantes de tiempo de compilación en C, Java, Go y JavaScript. |
| kebab-case | kebab | user-first-name | URLs, propiedades personalizadas de CSS y nombres de clase, nombres de paquetes npm. No es un identificador válido en la mayoría de los lenguajes. |
| Train-Case | train | User-First-Name | Nombres de encabezados HTTP — Content-Type, X-Request-Id — que no distinguen entre mayúsculas y minúsculas, pero se escriben convencionalmente de esta manera. |
| dot.case | dot | user.first.name | Claves de configuración anidadas, claves de mensajes i18n y espacios de nombres de estilo de paquetes de Java. |
| path/case | path | user/first/name | Segmentos de ruta URL y rutas de archivo construidas a partir de un nombre. |
| Tipo oración | sentence | User first name | Prosa. Capitaliza la primera letra de cada oración y deja el resto como está, por lo que los acrónimos existentes sobreviven. |
| Tipo Título | title | User First Name | Encabezados. Las palabras menores permanecen en minúsculas a menos que sean la primera o la última. |
| minúsculas | lower | user first name | La cadena completa en minúsculas, puntuación y espaciado intactos. |
| MAYÚSCULAS | upper | USER FIRST NAME | La cadena completa en mayúsculas. |
| aLtErNaDo | alternating | uSeR fIrSt nAmE | Alternancia de mayúsculas y minúsculas, carácter por carácter. |
| iNVERSO | inverse | uSER fIRST nAME | La case de cada letra se invierte. |
Preguntas frecuentes
¿Por qué XMLHttpRequest se dividió en tres palabras?
Porque son tres. La regla dice que una secuencia toda en mayúsculas seguida de una mayúscula y una minúscula termina la palabra en esa frontera: XMLH-ttp se convierte en XML | Http. Sin ella obtienes o una sola palabra — xmlhttprequest — u ocho, con cada mayúscula empezando una nueva: x_m_l_http_request. Las dos opciones están mal y las dos son habituales.
¿Tengo que indicarle en qué formato está mi entrada?
No, y deliberadamente no existe ninguna opción para eso. Todos los separadores se tratan por igual y se detecta cada frontera de mayúsculas, así que camelCase, snake_case, kebab-case, dot.case y la prosa normal se dividen en la misma lista de palabras. La entrada mixta también funciona, algo que importa cuando conviertes una lista que alguien armó a partir de tres bases de código.
¿Por qué hay una opción regional para pasar a minúsculas?
Porque "I".toLocaleLowerCase() da "ı" — una i sin punto — en turco y azerí. Es lingüísticamente correcto y desastroso para los identificadores: una comparación ASCII contra "id" falla, y el código que pasa a minúsculas la entrada del usuario para compararla con una palabra clave deja de funcionar para los usuarios turcos. La opción viene desactivada por defecto porque el trabajo habitual aquí es código, y activada para la prosa en esas lenguas.
¿UserId o UserID?
Depende del lenguaje. La guía de estilo de Go exige UserID y pone mayúscula en cada sigla — APIURL, HTTPServer. C# y Java usan UserId, con mayúscula solo en la primera letra de una sigla de más de dos caracteres. Ninguno es más correcto; usa el que coincida con el código que lo rodea, y por eso esto es un conmutador.
¿Puede convertir un archivo entero de identificadores?
Uno por línea, sí — cada línea se convierte de forma independiente, así que puedes pegar una columna de un esquema o de una configuración y recuperar el conjunto entero. No es un renombrado que entienda el código: no sabe qué palabras de una línea son identificadores y cuáles son sintaxis, así que convierte la línea entera como un solo nombre.
¿Se sube mi texto?
No. Es manipulación de cadenas que se ejecuta en tu navegador. Los identificadores que la gente convierte describen sistemas internos — nombres de tablas, nombres de campos, feature flags —, lo cual no es exactamente secreto, y tampoco es algo que se entregue a un servidor desconocido sin motivo.
¿Qué herramientas relacionadas debería usar después?
- Convertir XML a JSONConvierte sin perder atributos ni listas de un solo elemento
- Convertir JSON a XMLConvierte con atributos y nombres que XML acepta
- Convertir YAML a JSONConvierte YAML sin que «NO» se convierta en false
- Convertir JSON a YAMLConvierte con las comillas necesarias para volver sin pérdidas