web-dev-qa-db-fra.com

chaîne fendue à la dernière occurrence du caractère

J'essaie essentiellement de renverser une chaîne sur la dernière période pour capturer l'extension de fichier . Mais parfois, le fichier n'a AUCUNE extension, donc je prévois que . avant la fin comme si ...

            /mnt/sdcard/OG Ron C, Chopstars & Drake - Choppin Ain't The Same-2013-MIXFIEND/02 Drake - Connect (Feat. Fat Pat) (Chopped Not Slopped).mp3

Ainsi, lorsque cette chaîne apparaît, elle est coupée à "02 Drake - Connect (Feat."

C'est ce que j'ai utilisé ...

            String filePath = intent.getStringExtra(ARG_FILE_PATH);
    String fileType = filePath.substring(filePath.length() - 4);
    String FileExt = null;
    try {
        StringTokenizer tokens = new StringTokenizer(filePath, ".");
        String first = tokens.nextToken();
        FileExt = tokens.nextToken();
    }catch(NoSuchElementException e){
        customToast("the scene you chose, has no extension :(");
    }
    System.out.println("EXT " +FileExt);
    File fileToUpload = new File(filePath);

Comment diviser la chaîne au niveau de l’extension du fichier, mais aussi pouvoir gérer et alerter lorsque le fichier n’a pas d’extension.

28
sirvon

Il peut être plus simple de supposer que les fichiers qui se terminent par un point suivi de caractères alphanumériques ont des extensions.

int p=filePath.lastIndexOf(".");
String e=filePath.substring(p+1);
if( p==-1 || !e.matches("\\w+") ){/* file has no extension */}
else{ /* file has extension e */ }

Voir la documentation Java pour les modèles d'expression régulière. N'oubliez pas d'échapper à la barre oblique inversée, car la chaîne de modèle nécessite la barre oblique inversée.

28
user1537366

Tu peux essayer ça

int i = s.lastIndexOf(c);
String[] a =  {s.substring(0, i), s.substring(i)};
37
Evgeniy Dorofeev

Est-ce Java? Si c'est le cas, pourquoi ne pas utiliser "Java.io.File.getName".

Par exemple:

File f = new File("/aaa/bbb/ccc.txt");
System.out.println(f.getName());

En dehors:

ccc.txt
6
Kei Minagawa

Que diriez-vous de diviser le chemin du fichier en utilisant la période comme séparateur. Et en prenant le dernier élément de ce tableau pour obtenir l'extension:

        String fileTypeArray[] = filePath.split(",");
        String fileType = "";
        if(fileTypeArray != null && fileTypeArray.length > 0) {
          fileType = fileTypeArray[fileTypeArray.length - 1];
        }
0
Juned Ahsan