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

Удалить расширение файла

Учитывая имя файла, например:

 package.zip    image.jpeg   video.avi etc

Я хочу удалить расширение, если оно существует. Как я могу сделать это на Java? Спасибо!

4b9b3361

Ответ 1

Что-то вроде

if (name.indexOf(".") > 0)
    name = name.substring(0, name.lastIndexOf("."));

Проверка индекса позволяет избежать превращения скрытых файлов типа ".profile" в "", а lastIndexOf() выполняет поиск таких имен, как cute.kitty.jpg.

Ответ 3

Вот немного более надежная версия:

public static String stripExtension(final String s)
{
    return s != null && s.lastIndexOf(".") > 0 ? s.substring(0, s.lastIndexOf(".")) : s;
}

Изящно обрабатывает null, случаи, когда нет ничего, что выглядит как расширение, и не вызывает недоработки файлов, начинающихся с ., это также обрабатывает проблему .kitty.jpg.

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

Ответ 4

String result = filename.substring(0, filename.lastIndexOf("."))

Проверить, имеет ли имя файла . перед вызовом substring().

Ответ 5

myString = myString.replaceAll("\\.\\w+", "");

Ответ 6

String name = filename.lastIndexOf('.') > filename.lastIndexOf(File.separatorChar) ?
     filename.substring(0, filename.lastIndexOf('.'))
   : filename;

Сравнение проверяет, что само имя файла содержит ., в противном случае строка возвращается без изменений.

Ответ 7

Pattern suffix = Pattern.compile("\\.\\p{Alnum}+$");
Matcher m = suffix.matcher(filename);
String clearFilename = m.replaceAll("");

Проблема этого решения заключается в том, что в зависимости от ваших требований вам необходимо расширить его для поддержки составных расширений, таких как filename.tar.gz, filename.tar.bz2

[] 's

И прошлое