Convertisseur de casse de texte

Convertit du texte entre UPPERCASE, Title Case, camelCase, snake_case, kebab-case et plus, dans ton navigateur.

Convertis du texte entre toutes les casses du code et de la rédaction, directement dans ton navigateur. Ce convertisseur de casse de texte gère UPPERCASE, lowercase, Title Case, Sentence case, camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE, kebab-case, dot.case et les majuscules alternées. Sa vraie force, c'est qu'il découpe les frontières camelCase avant de convertir, donc fooBarBaz devient proprement foo_bar_baz au lieu du blob foobarbaz que recrachent la plupart des outils. Le texte se met à jour en direct pendant que tu tapes, un bouton copie la sortie, et des compteurs suivent les caractères et les mots. Le multi-lignes est traité ligne par ligne, parfait pour coller une colonne entière d'identifiants. Tout reste sur la page, rien ne part vers un serveur.

100% dans votre navigateur. Rien de ce que vous tapez ne quitte cette page.

Convertisseur de casse local pour rédacteurs et développeurs

Vous avez userAccountSettings dans le code, user_account_settings dans la base de données, et un titre qui réclame un beau Title Case pour le blog. Les mêmes mots, trois costumes. Collez votre texte ci-dessous, cliquez sur une casse, et la sortie se met à jour en direct pendant que vous tapez. La partie dont je suis vraiment fier : l'outil découpe les frontières camelCase avant de convertir, donc fooBarBaz devient foo_bar_baz au lieu du foobarbaz massacré que recrachent la plupart des convertisseurs. Tout tourne dans votre navigateur. Rien ne quitte la page.

 
Caractères entrée0
Mots entrée0
Caractères sortie0
Mots sortie0

100 % côté client. Le texte multi-lignes est converti ligne par ligne, donc coller une colonne entière d'identifiants fonctionne très bien.

Les casses du code, et qui utilise vraiment laquelle

Un convertisseur de casse de texte ne gagne sa place que s'il comprend les conventions sur lesquelles développeurs et correcteurs se battent vraiment. Les conventions de nommage semblent arbitraires jusqu'au moment où on réalise que chacune a résolu un vrai problème pour une communauté précise. Puis elles se sont fossilisées.

Le camelCase, c'est le réflexe JavaScript et Java pour les variables et les fonctions. Le guide de style JavaScript de Google est direct là-dessus : lowerCamelCase pour tout ce qui n'est pas une classe. Le PascalCase (même idée, première lettre en majuscule) marque les classes dans presque tous les langages de la famille C, plus les composants React, plus tout C#, où Microsoft l'utilise aussi pour les méthodes. Ce dernier point me fait encore bizarre après des années de JavaScript, mais bon, ils sont chez eux.

Le snake_case appartient à Python. PEP 8 le prescrit pour les fonctions, les variables et les noms de modules, et Ruby comme Rust suivent le même instinct. Côté SQL, on l'utilise pour les noms de colonnes parce que la plupart des bases de données normalisent la casse des identifiants non quotés, et les underscores survivent à ce traitement. Criez-le en majuscules et vous obtenez le SCREAMING_SNAKE_CASE, le signal quasi universel des constantes : MAX_RETRIES, API_BASE_URL. Franchement, c'est la seule convention sur laquelle presque tous les langages s'accordent, ce qui tient du petit miracle.

Le kebab-case ne peut pas exister dans la plupart des langages, le tiret y est lu comme un signe moins. Il vit donc là où les identifiants ne vont pas : URL, classes et propriétés personnalisées CSS, options de ligne de commande, noms de paquets npm. La documentation SEO de Google recommande depuis des années les tirets plutôt que les underscores dans les URL. Le dot.case se croise dans les clés de configuration et les fichiers de propriétés, pensez à logging.level.root dans Spring, ou aux noms de packages Java. Et les majuscules aLtErNaTiNg ? Aucun organisme de normalisation ne voudra les revendiquer. C'est le mème SpongeBob moqueur, et vous savez très exactement quand vous en avez besoin.

Les règles du Title Case qui divisent les correcteurs

Tout le monde est d'accord pour capitaliser les mots importants. La bagarre porte sur les petits. Le style AP met en minuscules les conjonctions et prépositions courtes mais capitalise tout ce qui fait quatre lettres ou plus. Chicago met les prépositions en minuscules quelle que soit leur longueur, ce qui donne « Through » en minuscules dans un style et capitalisé dans l'autre. Des correcteurs se sont entretués sur ce point. Bon, pas entretués. Mais j'ai vu les fils Slack.

Cet outil garde une liste d'exceptions pragmatique : a, an, the, of, in, on, and, or, to restent en minuscules. Deux règles passent au-dessus de cette liste, et là tout le monde est d'accord : le premier et le dernier mot de la ligne prennent toujours une majuscule, quoi qu'il arrive. « The Lord of the Rings » fonctionne parce que « The » ouvre le titre. Si votre guide de style diffère sur une préposition précise, corrigez ce mot-là à la main. C'est plus rapide que de débattre.

Bon à savoir : une bonne partie du web a discrètement jeté l'éponge. Le guide de style de la documentation développeur de Google utilise simplement la Sentence case pour les titres, point final, parce que ça esquive tous ces débats d'un coup. MDN fait pareil. Si vous écrivez de la doc plutôt qu'un titre de livre, le bouton Sentence case est peut-être la réponse honnête.

L'astuce du découpage aux frontières camelCase

Voilà pourquoi la plupart des convertisseurs de casse échouent sur la seule tâche dont les développeurs ont vraiment besoin. Convertir backgroundColor en snake_case exige de savoir où sont les mots. Passez-le d'abord en minuscules et vous obtenez backgroundcolor, un seul bloc, frontière perdue pour toujours. L'information vivait dans ce C majuscule, et un convertisseur naïf la détruit dès la première étape.

Cet outil tokenise avant de transformer. Il découpe sur les espaces, les tirets, les underscores et les points, et il insère aussi une coupure partout où une lettre minuscule ou un chiffre est suivi d'une majuscule. fooBarBaz devient donc les tokens foo, bar, baz, et à partir de là, n'importe quelle casse de sortie n'est qu'une jointure avec une colle différente. Il y a une deuxième règle, plus sournoise, pour les suites d'acronymes : dans HTTPServer, la coupure se place avant la dernière majuscule de la série, ce qui donne http et server plutôt que quatre lettres orphelines. Cette paire de regex (([a-z0-9])([A-Z]) et ([A-Z]+)([A-Z][a-z])) fait plus de travail utile que tout le reste de cette page.

Le bénéfice concret : les allers-retours fonctionnent. camelCase vers snake_case vers kebab-case puis retour en camelCase, et vous retombez exactement au point de départ. Collez une colonne entière de champs de base de données, cliquez sur camelCase, et chaque ligne se convertit indépendamment. C'est tout l'outil, en vrai. Le reste, c'est des boutons.

Questions fréquentes

Mon texte est-il envoyé quelque part ?

Non. La conversion, c'est quelques lignes de JavaScript qui tournent dans votre propre onglet de navigateur. Rien ne part vers un serveur, donc coller des identifiants internes ou des titres pas encore publiés ne pose aucun problème.

Quelle est la différence entre camelCase et PascalCase ?

Une lettre. camelCase commence en minuscule (userName), PascalCase commence en majuscule (UserName). La convention veut camelCase pour les variables et les fonctions, PascalCase pour les classes et les types. C# ignore la moitié de tout ça et utilise PascalCase à peu près partout.

Quels mots restent en minuscules en Title Case ici ?

La liste d'exceptions, c'est a, an, the, of, in, on, and, or, to. Ils restent en minuscules sauf quand ils sont le premier ou le dernier mot de la ligne, qui prennent toujours une majuscule. Chaque guide de style étend cette liste à sa façon, vérifiez le vôtre si c'est important.

Comment l'outil découpe-t-il fooBarBaz en mots séparés ?

Il insère une frontière partout où une lettre minuscule ou un chiffre rencontre une majuscule, et avant la dernière majuscule d'une suite d'acronymes. fooBarBaz se tokenise en foo, bar, baz ; HTTPServer se tokenise en http, server. Ensuite, chaque casse n'est qu'une façon différente de recoller les tokens.

Puis-je convertir du snake_case directement en camelCase ?

Oui, c'est même le cas d'usage principal. Les underscores, les tirets, les points et les espaces comptent tous comme frontières de mots, donc user_account_settings, user-account-settings et « user account settings » produisent tous userAccountSettings.