Spezzare una parola in CamelCase

Spezzare una parola in CamelCase

Posted by gtrev on Ven, 14/09/2007 - 14:13 in

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.

AllegatoDimensione
TestCamel.java2.59 KB
In passato ho affrontato il
In passato ho affrontato il problema... ti posso dire solo di stare attento a occorrenze del tipo:
GetURLBaseAddress -> Get URL Base Address
e non Get U R L Base Address
 
Devi considerare una nuova pasola solo quando la maiuscola e seguota da una minuscola.
ciao,
Mariano
Posted by mariano on Gio, 27/09/2007 - 16:49
Beh no. GetURLBaseAddress

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

Posted by gtrev on Ven, 28/09/2007 - 09:51
In passato ho affrontato il
In passato ho affrontato il problema... ti posso dire solo di stare attento a occorrenze del tipo:
GetURLBaseAddress -> Get URL Base Address
e non Get U R L Base Address
 
Devi considerare una nuova pasola solo quando la maiuscola e seguota da una minuscola.
ciao,
Mariano
Posted by mariano on Gio, 27/09/2007 - 16:49
...posso fare una "supposta"
...posso fare una "supposta" sul perchè ti serve quel codice? Smile
Posted by Lucio Benfante on Ven, 14/09/2007 - 15:36
La tua "supposta" è esatta
La tua "supposta" è esatta Wink
Posted by gtrev on Ven, 14/09/2007 - 15:40
Uno torna qui dopo un sacco

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

Laughing

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???

Posted by era77 on Ven, 21/09/2007 - 08:38
Infatti la vera 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

Posted by gtrev on Ven, 21/09/2007 - 09:26
Non posso fare commenti su

Surprised

Non posso fare commenti su quanto detto.

Scrivo solo quanto segue:

GOTO Label

Posted by era77 on Lun, 24/09/2007 - 09:36
Invia nuovo commento
  • Linee e paragrafi vanno a capo automaticamente.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.

Maggiori informazioni sulle opzioni di formattazione.