Corsi on-line

Java, nomi ed estensioni di file

Il primo problema a cui uno sviluppatore dovrebbe essere in grado di porre rimedio è la propria disattenzione, difficilmente ciò che si da per scontato non diventa fonte di malfunzionamenti e un collo di bottiglia superato con un workaroud raramente sopravvive alla prova del deployment; non mi riferisco a situazioni particolarmente complesse, un semplice esempio potrebbe essere quello di un sorgente Java per l’estrazione dell’estensione di un file:


String nomefile = "logo_mrw.png";
int index = nomefile.indexOf(".");
String estensione = nomefile.substring(index);

Fino a qui nulla di male, il metodo indexOf() (ne esiste uno praticamente identico in JavaScript) restituisce infatti la posizione delle prima occorrenza di un determinato elemento (o sottostringa) all’interno di una stringa; dato che  “.”  è stato utilizzato come argomento di indexOf(), passando l’index prodotto al metodo substring() verrà effettuata una regolare estrazione dell’estensione  in quanto posizionata successivamente all’unico punto fermo presente; substring() ha in pratica la funzione di restituire una nuova stringa che è sottostringa di una stringa originaria sulla base di un indice.

Ma cosa accadrebbe se il nome del file fosse per esempio:

all.logo.blog.mrw.png

Un assunto di base errato, quello per il quale il nome di un file sarebbe composto dalla classica sequenza “nome+.+estensione”, darebbe luogo a risultati indesiderati; la scelta del giusto metodo risolverebbe invece il problema.

Nel caso specifico, è buona norma utilizzare lastIndexOf() in luogo di indexOf(), il primo infatti restituisce l’index relativo all’ultima occorrenza di un determinato carattere (ad esempio “.”) interno ad una stringa, per questo motivo la sottostringa ottenuta dallo snippet precedentemente proposto sarà l’estensione del file memorizzato nella variabile iniziale.

Post correlati
I più letti del mese
Tematiche