it-swarm.com.de

zeichenfolge beim letzten Vorkommen des Zeichens

Ich versuche im Grunde, einen String auf die letzte Periode zu verteilen, um die Dateierweiterung zu erfassen. Aber manchmal hat die Datei KEINE Erweiterung, also rechne ich damit. Aber das Problem ist, dass einige Dateinamen Perioden haben vor dem Ende so ...

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

Wenn diese Saite auftaucht, wird sie bei "02 Drake - Connect (Feat.") Gekürzt.

Das ist was ich benutzt habe ...

            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);

Wie teile ich den String an der Dateierweiterung auf, kann aber auch darauf reagieren, wenn die Datei keine Erweiterung hat.

28
sirvon

Es ist möglicherweise einfacher anzunehmen, dass Dateien, die mit einem Punkt und alphanumerischen Zeichen enden, Erweiterungen haben.

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 */ }

Siehe die Java-Dokumente für Muster für reguläre Ausdrücke. Denken Sie daran, den Backslash zu umgehen, da die Musterzeichenfolge den Backslash benötigt.

28
user1537366

Sie können es versuchen

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

Ist das Java? Wenn ja, warum verwenden Sie nicht "Java.io.File.getName".

Zum Beispiel:

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

Aus:

ccc.txt
6
Kei Minagawa

Wie wäre es, den Dateipfad mit dem Punkt als Trennzeichen zu teilen. Und das letzte Element in diesem Array nehmen, um die Erweiterung zu erhalten:

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