Подтвердить что ты не робот

Разделить строку на последнее вхождение символа

В основном я пытаюсь пролить строку в последний период, чтобы захватить расширение файла. Но иногда у файла нет расширения, поэтому я ожидаю этого. Но проблема в том, что некоторые имена файлов имеют периоды до конца так...

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

Итак, когда эта строка появляется, она прерывает ее при "02 Drake - Connect (Feat.)

Это то, что я использовал...

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

Как разбить строку на расширение файла, но также иметь возможность обрабатывать и предупреждать, когда файл не имеет расширения.

4b9b3361

Ответ 1

Возможно, было бы проще предположить, что файлы, которые заканчиваются точкой, за которой следуют буквенно-цифровые символы, имеют расширения.

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

См. документы Java для шаблонов регулярных выражений. Не забудьте избежать обратного слэша, потому что строка шаблона требует обратную косую черту.

Ответ 2

Вы можете попробовать это

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

Ответ 3

Является ли эта Java? Если да, почему бы вам не использовать "java.io.File.getName".

Например:

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

Из:

ccc.txt

Ответ 4

Как насчет разделения filpath с использованием периода как разделителя. И взяв последний элемент в этом массиве, чтобы получить расширение:

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