2015-12-16 12 views
8

Mi chiedo se esiste un modo "Groovy" per rimuovere l'estensione del file da un nome file.Modo Groovy per rimuovere l'estensione del file?

La soluzione attuale si basa sui commons apache io pacchetto:

import org.apache.commons.io.FilenameUtils 

String filename = '/tmp/hello-world.txt' 
def fileWithoutExt = FilenameUtils.removeExtension(filename) 
+0

a meno che non vogliate eliminare l'intero commons.jar - cosa c'è di sbagliato nell'usare una funzione di libreria (temprata dalla battaglia)? – cfrick

risposta

14

Si può fare qualcosa di simile:

filename[0..<filename.lastIndexOf('.')] 

Per rimuovere tutto dopo l'ultima . nella stringa.

oppure leggermente più bella:

filename.take(filename.lastIndexOf('.')) 
+1

Nell'esempio fornito è possibile utilizzare qualsiasi metodo di sottostringa che si preferisce, ma nel caso generale potrebbe non esserci un'estensione e in alcuni casi le directory contengono un ".", Ad esempio le directory nascoste in linux. –

2

può essere eccessivo in questo caso, ma tendono a trattare un sacco di classi Comuni come mixins

String.metaClass.mixin org.apache.commons.io.StringUtils 
String.metaClass.mixin org.apache.commons.io.FilenameUtils 
etc 

Questo poi si permette di

String filename = '/tmp/hello-world.txt' 
def fileWithoutExt = filename.removeExtension() 

Quali mixin in base ai requisiti della sceneggiatura, ma tendo a utilizzare molto questo schema. Mi consente di utilizzare facilmente i metodi che sono abituato a utilizzare senza tutti i riferimenti statici o di importazione.

Problemi correlati