Spezzare una parola in CamelCase

Il camelcase come ci ricorda wikipedia:
[...] è la pratica di scrivere parole composte o frasi unendo tutte le parole tra loro, ma lasciando le loro iniziali maiuscole. Il nome (letteralmente "carattere a cammello") deriva dai "salti" all'interno di una parola, che fanno venire in mente le gobbe di un cammello. [...]
Il camel case è molto usato dai programmatori Java perché è la convenzione ufficiale di Sun per la scrittura dei nomi di classe e di variabile.
Detto questo, può capitare di voler prendere una parola in camel case e separarla nelle sue componenti. Confesso di aver cercato un po' su internet ma di non aver trovato del codice già pronto, quindi ecco di seguito il metodo che mi sono
scritto.
L'idea è semplice:
prendo gli indici di dove sono le lettere maiuscole e spezzo le parole secondo questi indici.
Per fare questo mi viene in aiuto il pattern matching e precisamente il pattern che rappresenta le lettere maiuscole nel character set unicode, cioè \p{Lu}.
Il codice è qua di seguito:
List<Integer> idxList = new ArrayList<Integer>();
//\p{Lu} is the unicode pattern for capital letters
Pattern p = Pattern.compile("\\p{Lu}");
Matcher m = p.matcher(camelString);
//find all occurrences of an uppercase letter and
//put their position in a list
while(m.find()){
idxList.add(m.start());
}
Una volta ottenute le posizioni è sufficiente usare il metodo substring sulla stringa considerata, avendo cura di usare gli indici appena ricavati.
Allego al post la classe completa.
| Allegato | Dimensione |
|---|---|
| TestCamel.java | 2.59 KB |
- gtrev's blog
- 2216 reads



Beh no. GetURLBaseAddress dovrebbe essere spezzato in Get U R L Base Address.
GetUrlBaseAddress invece diventa Get Url Base Address.
Se infatti supponi che la lettera maiuscola sia una convenzione per sostituire lo spazio, la convenzione va applicata anche a URL. Nel javadoc del metodo ho comunque dichiarato questo comportamento del metodo che adesso trovate anche in org.parancoe.util.Utils
Uno torna qui dopo un sacco e mezzo di tempo... E si trova dinnanzi a cammelli e supposte?
Direi che questo esprime a pieno lo spirito di questo blog
Agganciandomi al desertico animale. Ma lo sapete che la famosa frase "E' più facile che un cammello passi per la cruna di un ago che un ricco entri nel Regno dei Cieli" è un errore di traduzione???
Infatti la vera traduzione è "E' più facile che un programmatore COBOL capisca la programmazione ad oggetti che un ricco entri nel regno dei cieli".
A chi obietterà dell'esistenza del COBOL 2000 anni fa, rispondo che nel 1975 Dijkstra sosteneva che il COBOL non doveva nemmeno essere insegnato perché rovina le menti.
Ecco che Dijkstra è morto, mentre il COBOL è ancora tra noi. COBOL è immortale
Non posso fare commenti su quanto detto.
Scrivo solo quanto segue:
GOTO Label