Pega cualquier texto y obtenlo en todas las convenciones de nomenclatura habituales, además de como slug de URL.
Escribe o pega texto para convertirlo.
Cuándo usar cada convención
Las convenciones de nomenclatura consisten sobre todo en ajustarse al lenguaje que usas. JavaScript y Java emplean camelCase para variables y PascalCase para clases y componentes. Python y Rust usan snake_case para variables y funciones. Las clases CSS, los nombres de archivo y las URL usan kebab-case. CONSTANT_CASE marca valores que no cambian.
El slug de URL va más allá del kebab-case: también elimina acentos y puntuación, de modo que «Zażółć gęślą jaźń!» se convierte en un segmento de dirección limpio y seguro. Por eso es la opción adecuada para URL de páginas, nombres de archivo y anclas.
Poner straße en mayúsculas alarga la cadena, y devolverla a minúsculas da otra palabra
Cambiar de caja parece un intercambio carácter por carácter. No lo es. La ß alemana pasa a SS en mayúsculas, así que una palabra de seis caracteres se convierte en siete, y devolver el resultado a minúsculas da strasse, que no es la palabra de partida. La conversión de caja puede cambiar la longitud, no es reversible y depende del idioma de quien lee.
Cómo funciona
- Convierte entre mayúsculas, minúsculas, caja de título, caja de oración y estilos camel, snake y kebab.
- Usa conversión sensible a la configuración regional, porque el resultado correcto difiere según el idioma.
- Maneja caracteres cuyo cambio de caja altera la longitud de la cadena.
mayúsculas y minúsculas NO son operaciones inversas straße → STRASSE → strasse (6 → 7 → 7 caracteres) la configuración regional importa: "I".toLowerCase() → "i" configuración turca → "ı" (U+0131, sin punto)
Ejemplo resuelto
Dos casos en los que la conversión ingenua es incorrecta.
- straße tiene 6 caracteres
- en mayúsculas → STRASSE, 7 caracteres
- de nuevo en minúsculas → strasse, sigue teniendo 7 y ya no es la palabra original
- "I" en minúsculas en inglés → "i"
- "I" en minúsculas en turco → "ı", un carácter completamente distinto
La longitud cambió, el viaje de ida y vuelta perdió información, y la respuesta correcta para una de las entradas depende de quién la lea. Cualquier código que suponga que la conversión de caja es una correspondencia biunívoca reversible se equivoca en ambos puntos.
Cómo leer el resultado
- Nunca pliegues la caja para comparar usando solo toUpperCase o toLowerCase. Unicode define una operación de case folding precisamente para eso; usar la conversión pensada para mostrar al comparar identificadores produce discrepancias que solo aparecen en ciertos idiomas.
- La i turca con y sin punto es el fallo regional clásico. Pasar una I ASCII a minúsculas en configuración turca da ı, así que una comparación sin distinguir mayúsculas de nombres de archivo, comandos o usuarios falla en silencio para los usuarios turcos y para nadie más.
- La caja de título no es una operación Unicode sino una convención editorial, y difiere entre manuales de estilo y entre idiomas. El alemán escribe con mayúscula todos los sustantivos; los manuales ingleses se contradicen entre sí sobre las preposiciones cortas. Ningún ajuste de biblioteca lo hace correcto en todas partes.
- Los estilos de nombres en programación traen sus propios peligros. Convertir a camelCase y volver pasando por snake_case pierde información en cuanto hay siglas: parseHTTPResponse y parseHttpResponse dan la misma forma snake y no pueden distinguirse a la vuelta.
Preguntas frecuentes
- ¿Por qué se alargó mi texto al pasarlo a mayúsculas?
- Porque algunos caracteres se expanden. La ß alemana pasa a SS, y varias ligaduras se descomponen igual. Cualquier maquetación, columna de base de datos o regla de validación que suponga que la conversión conserva la longitud acabará rompiéndose con datos reales.
- ¿Cómo comparo dos cadenas ignorando la caja?
- Usa case folding en lugar de pasar a mayúsculas o minúsculas, e indica la configuración regional cuando exista contexto lingüístico. Pasar a minúsculas de forma ingenua es correcto para ASCII y da respuestas erróneas en turco, alemán y varios idiomas más.