import java.util.Arrays;
import java.util.Comparator;
public class FileExt{
public static void main(String[] args){
String[] tests = {"text.txt", "text.TXT", "test.tar.gz", "test/test2.exe", "test\\test2.exe", "test2", "a/b/c\\d/foo", "/test/test3.bat","c:\\test\\test3.bat"};
String[] exts = {".txt",".gz",".bat"};
System.out.println("Extensiones: " + Arrays.toString(exts) + "\n");
for(String test:tests){
System.out.println(test +": " + extIsIn(test, exts));
}
}
public static boolean extIsIn(String test, String... exts){
// buscamos la posicion de la barra (/) o de las dobrles barras (\\)
int lastSlash = Math.max(test.lastIndexOf('/'), test.lastIndexOf('\\'));
// obtenemos el ultimo valor despues de la barra
String filename = test.substring(lastSlash + 1);
// buscamos el ultimo punto en la cadena si lo hubiera, sino, devolvemos la posicion final
int lastDot = filename.lastIndexOf('.') == -1 ? filename.length() : filename.lastIndexOf('.');
// obtenemos la extension
String ext = filename.substring(lastDot);
// Ordenamos el array de extensiones
Arrays.sort(exts);
// utilizamos el método de búsqueda binaria
// devolvera un numero negativo si no lo encuentra
return Arrays.binarySearch(exts, ext, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o1.compareToIgnoreCase(o2);
}
}) >= 0;
}
}
Comentarios sobre la versión: Versión 1.0 (0)
No hay comentarios