Учитывая имя файла, например:
package.zip image.jpeg video.avi etc
Я хочу удалить расширение, если оно существует. Как я могу сделать это на Java? Спасибо!
Учитывая имя файла, например:
package.zip image.jpeg video.avi etc
Я хочу удалить расширение, если оно существует. Как я могу сделать это на Java? Спасибо!
Что-то вроде
if (name.indexOf(".") > 0)
name = name.substring(0, name.lastIndexOf("."));
Проверка индекса позволяет избежать превращения скрытых файлов типа ".profile
" в "", а lastIndexOf()
выполняет поиск таких имен, как cute.kitty.jpg
.
Использовать Apache Commons IO, FilenameUtils.getBaseName(String filename)
или removeExtension(String filename)
, если вам тоже нужен путь.
Вот немного более надежная версия:
public static String stripExtension(final String s)
{
return s != null && s.lastIndexOf(".") > 0 ? s.substring(0, s.lastIndexOf(".")) : s;
}
Изящно обрабатывает null
, случаи, когда нет ничего, что выглядит как расширение, и не вызывает недоработки файлов, начинающихся с .
, это также обрабатывает проблему .kitty.jpg
.
Это будет обрабатывать большинство общих случаев в контролируемой среде, если суффикс на самом деле не является расширением, только что-то .
разделяется, тогда вам нужно добавить некоторую проверку, чтобы увидеть, является ли конечная часть фактически расширением, которое вы признаете.
String result = filename.substring(0, filename.lastIndexOf("."))
Проверить, имеет ли имя файла .
перед вызовом substring()
.
myString = myString.replaceAll("\\.\\w+", "");
String name = filename.lastIndexOf('.') > filename.lastIndexOf(File.separatorChar) ?
filename.substring(0, filename.lastIndexOf('.'))
: filename;
Сравнение проверяет, что само имя файла содержит .
, в противном случае строка возвращается без изменений.
Pattern suffix = Pattern.compile("\\.\\p{Alnum}+$");
Matcher m = suffix.matcher(filename);
String clearFilename = m.replaceAll("");
Проблема этого решения заключается в том, что в зависимости от ваших требований вам необходимо расширить его для поддержки составных расширений, таких как filename.tar.gz, filename.tar.bz2
[] 's
И прошлое