Skip to main content

Incolla un testo qualsiasi e ottienilo in tutte le convenzioni di scrittura più comuni, oltre che come slug URL.

Digita o incolla del testo per convertirlo.

Quando usare ciascuna convenzione

Le convenzioni di denominazione servono soprattutto ad allinearsi al linguaggio che stai usando. JavaScript e Java usano camelCase per le variabili e PascalCase per classi e componenti. Python e Rust usano snake_case per variabili e funzioni. Classi CSS, nomi di file e URL usano kebab-case. CONSTANT_CASE indica valori che non cambiano mai.

Lo slug URL va oltre il kebab-case: rimuove anche accenti e punteggiatura, così «Zażółć gęślą jaźń!» diventa un segmento di indirizzo pulito e sicuro. È quindi la scelta giusta per URL di pagine, nomi di file e ancore.

Mettere straße in maiuscolo allunga la stringa, e riportarla in minuscolo dà un'altra parola

Cambiare il caso sembra uno scambio carattere per carattere. Non lo è. La ß tedesca in maiuscolo diventa SS, quindi una parola di sei caratteri ne diventa sette — e riportare il risultato in minuscolo dà strasse, che non è la parola di partenza. La conversione di caso può cambiare la lunghezza, non è reversibile e dipende dalla lingua di chi legge.

Come funziona

  • Converte fra maiuscolo, minuscolo, caso titolo, caso frase e stili camel, snake e kebab.
  • Usa una conversione consapevole delle impostazioni locali, perché il risultato corretto varia con la lingua.
  • Gestisce i caratteri il cui cambio di caso altera la lunghezza della stringa.
maiuscolo e minuscolo NON sono operazioni inverse

straße → STRASSE → strasse     (6 → 7 → 7 caratteri)

le impostazioni locali contano:
  "I".toLowerCase()      → "i"
  locale turca            → "ı"  (U+0131, senza punto)

Esempio pratico

Due casi in cui la conversione ingenua è sbagliata.

  1. straße ha 6 caratteri
  2. in maiuscolo → STRASSE, 7 caratteri
  3. di nuovo in minuscolo → strasse, sempre 7 e non è più la parola originale
  4. "I" in minuscolo in inglese → "i"
  5. "I" in minuscolo in turco → "ı", un carattere del tutto diverso

La lunghezza è cambiata, il viaggio di andata e ritorno ha perso informazione, e la risposta corretta per uno degli input dipende da chi lo legge. Qualsiasi codice che presuma la conversione di caso come corrispondenza biunivoca reversibile sbaglia su entrambi i fronti.

Come leggere il risultato

  • Non ripiegare mai il caso per confrontare usando solo toUpperCase o toLowerCase. Unicode definisce un'operazione di case folding esattamente per questo; usare la conversione pensata per la visualizzazione nel confronto di identificatori produce discordanze che compaiono solo in certe lingue.
  • La i turca con e senza punto è il bug di localizzazione classico. Portare una I ASCII in minuscolo in locale turca dà ı, quindi un confronto senza distinzione di caso su nomi di file, comandi o nomi utente fallisce in silenzio per gli utenti turchi e per nessun altro.
  • Il caso titolo non è un'operazione Unicode ma una convenzione editoriale, e varia fra manuali di stile e fra lingue. Il tedesco scrive con la maiuscola tutti i sostantivi; i manuali inglesi sono in disaccordo fra loro sulle preposizioni brevi. Nessuna impostazione di libreria lo rende corretto ovunque.
  • Gli stili di denominazione in programmazione portano insidie proprie. Convertire in camelCase e tornare indietro passando per snake_case è lossy non appena entrano in gioco le sigle: parseHTTPResponse e parseHttpResponse producono la stessa forma snake e al ritorno non sono più distinguibili.

Domande frequenti

Perché il mio testo si è allungato dopo il passaggio in maiuscolo?
Perché alcuni caratteri si espandono. La ß tedesca diventa SS, e diverse legature si scompongono allo stesso modo. Qualsiasi impaginazione, colonna di database o regola di validazione che presuma che la conversione preservi la lunghezza prima o poi si romperà su dati reali.
Come confronto due stringhe ignorando il caso?
Usa il case folding anziché il passaggio a maiuscolo o minuscolo, e indica la locale quando esiste un contesto linguistico. Il passaggio ingenuo a minuscolo è corretto per l'ASCII e dà risposte errate in turco, tedesco e diverse altre lingue.