Aller au contenu principal

Convertir la casse

Le convertisseur de casse réécrit des identifiants entre camelCase, PascalCase, snake_case, kebab-case, CONSTANT_CASE et neuf autres, dans votre navigateur. La conversion est triviale ; la partie difficile consiste à découper l’entrée en mots — XMLHttpRequest fait trois mots, user2fa en fait trois, et un convertisseur qui se trompe là-dessus produit une sortie que personne ne veut.

100 % local
Entrée (un identifiant par ligne)
0 B1 ligneLig. 1, Col. 1
camelCase
 
PascalCase
 
snake_case
 
CONSTANT_CASE
 
kebab-case
 
Train-Case
 
dot.case
 
path/case
 
Majuscule initiale
 
Casse De Titre
 
minuscules
 
MAJUSCULES
 
aLtErNé
 
iNVERSÉ
 

Comment fonctionne Convertir la casse ?

Toute convention de nommage est la même liste de mots rendue différemment ; convertir de l’une à l’autre, c’est un seul problème — découper l’entrée en mots — suivi d’un assemblage trivial. Toute la différence entre convertisseurs tient dans la première étape.

Trois frontières de mots, classées selon la fréquence à laquelle elles sont manquées

Une transition du minuscule vers le majuscule, c’est l’évidence même : userName fait deux mots. Un acronyme suivi d’un mot, c’est celle où la plupart des convertisseurs se trompent : XMLHttpRequest se décompose en XML Http Request, et non en un seul mot ni en huit. Une transition de lettre à chiffre, c’est celle à laquelle personne ne pense : user2fa se décompose en user 2 fa, d’où le fait que user2fa devienne user_2_fa plutôt que user2fa.

Les séparateurs — espace, tiret bas, tiret, point, barre oblique — sont tous traités de la même façon, et c’est ce qui permet à l’outil d’accepter une entrée dans n’importe quelle convention sans qu’on lui précise laquelle. Vous ne choisissez pas de format source, parce qu’il n’y a rien à choisir.

Le I turc

"I".toLocaleLowerCase() donne "ı" — un i sans point — en turc et en azéri, et non "i". C’est correct pour ces langues et catastrophique pour le code : toute comparaison insensible à la casse contre une chaîne ASCII échoue, et un identifiant nommé ID devient quelque chose qu’un compilateur ne reconnaît pas. La casse est donc gérée ici indépendamment de la locale par défaut, la variante sensible à la locale restant disponible pour la prose, où c’est la bonne réponse.

Les styles de prose changent la casse, pas la structure

La casse de phrase et la casse de titre agissent sur le texte lui-même plutôt que sur ses mots : la ponctuation, l’espacement et les acronymes existants survivent. La casse de titre laisse les mots secondaires — a, an, the, of, to et les autres — en minuscules sauf s’ils sont premiers ou derniers, règle que partagent la plupart des guides de style anglais même s’ils divergent sur la liste.

La préservation des acronymes est un vrai choix

user_id en PascalCase donne UserId ou UserID selon les conventions de votre langage — le guide de style de Go impose la seconde, celui de C# la première pour les acronymes de deux lettres comme pour les plus longs. Aucune des deux n’est fausse, d’où une option à bascule plutôt qu’une décision prise à votre place.

Entrée

XMLHttpRequest

Converti

words        XML | Http | Request
camelCase    xmlHttpRequest
snake_case   xml_http_request
CONSTANT     XML_HTTP_REQUEST
kebab-case   xml-http-request

Quelles options et quels cas limites Convertir la casse prend en charge ?

Référence technique et options
ParamètreTypeValeur par défautComportement et cas limites
camelCasecameluserFirstNameVariables et fonctions JavaScript et Java. Premier mot en minuscule, le reste en majuscules.
PascalCasepascalUserFirstNameNoms de types dans presque tous les langages : classes, interfaces, composants React.
snake_casesnakeuser_first_nameIdentifiants Python et Ruby, ainsi que noms de colonnes SQL dans Postgres.
CONSTANT_CASEconstantUSER_FIRST_NAMEVariables d’environnement et constantes de compilation en C, Java, Go et JavaScript.
kebab-casekebabuser-first-nameURL, propriétés personnalisées CSS et noms de classes, noms de paquets npm. N’est pas un identifiant légal dans la plupart des langages.
Train-CasetrainUser-First-NameNoms d’en-têtes HTTP — Content-Type, X-Request-Id — qui ne sont pas sensibles à la casse mais sont conventionnellement écrits ainsi.
dot.casedotuser.first.nameClés de configuration imbriquées, clés de messages i18n, et espaces de noms de style de paquets Java.
path/casepathuser/first/nameSegments de chemin d’URL et chemins de fichiers construits à partir d’un nom.
Majuscule initialesentenceUser first nameProse. Met une majuscule au début de chaque phrase et laisse le reste tel quel, de sorte que les acronymes existants sont préservés.
Casse De TitretitleUser First NameTitres. Les mots mineurs restent en minuscules sauf s’ils sont en première ou dernière position.
minusculesloweruser first nameToute la chaîne en minuscules, la ponctuation et l’espacement sont inchangés.
MAJUSCULESupperUSER FIRST NAMEToute la chaîne en majuscules.
aLtErNéalternatinguSeR fIrSt nAmEAlternance de casse, caractère par caractère.
iNVERSÉinverseuSER fIRST nAMEChaque lettre est inversée de casse.

Questions fréquentes

Pourquoi XMLHttpRequest a-t-il été découpé en trois mots ?

Parce qu’il en compte trois. La règle veut qu’une suite de majuscules suivie d’une majuscule puis d’une minuscule termine le mot à cette frontière : XMLH-ttp devient XML | Http. Sans elle, vous obtenez soit un seul mot — xmlhttprequest — soit huit, chaque majuscule commençant un nouveau mot : x_m_l_http_request. Les deux sont faux, et les deux sont courants.

Faut-il lui préciser le format de votre entrée ?

Non, et il n’existe délibérément aucune option pour cela. Tous les séparateurs sont traités pareil et chaque frontière de casse est détectée, donc camelCase, snake_case, kebab-case, dot.case et la prose ordinaire se découpent tous en la même liste de mots. Une entrée mixte fonctionne aussi, ce qui compte quand vous convertissez une liste que quelqu’un a assemblée à partir de trois bases de code.

Pourquoi une option de locale pour la mise en minuscules ?

Parce que "I".toLocaleLowerCase() donne "ı" — un i sans point — en turc et en azéri. C’est linguistiquement correct et désastreux pour les identifiants : une comparaison ASCII contre "id" échoue, et un code qui met l’entrée utilisateur en minuscules pour la comparer à un mot-clé cesse de fonctionner pour les utilisateurs turcs. L’option est désactivée par défaut parce que le travail habituel ici, c’est du code, et activée pour la prose dans ces langues.

UserId ou UserID ?

Cela dépend du langage. Le guide de style de Go impose UserID et met une majuscule à chaque sigle — APIURL, HTTPServer. C# et Java utilisent UserId, en ne capitalisant que la première lettre d’un acronyme de plus de deux caractères. Aucune n’est plus correcte ; utilisez celle qui correspond au code environnant, et c’est pourquoi l’outil propose une bascule.

Peut-il convertir tout un fichier d’identifiants ?

Une par ligne, oui — chaque ligne est convertie indépendamment, donc vous pouvez coller une colonne tirée d’un schéma ou d’une configuration et récupérer le tout. Ce n’est pas un renommage qui tient compte du code : l’outil ne sait pas quels mots d’une ligne sont des identifiants et lesquels sont de la syntaxe, donc il convertit la ligne entière comme un seul nom.

Mon texte est-il envoyé quelque part ?

Non. C’est de la manipulation de chaînes, qui s’exécute dans votre navigateur. Les identifiants que les gens convertissent décrivent des systèmes internes — noms de tables, noms de champs, feature flags — ce qui n’est pas exactement secret, mais n’est pas non plus quelque chose à confier sans raison à un serveur inconnu.