删除文件的扩展名

时间:2011-09-24 20:01:11

标签: java regex

给出如下文件名:

 package.zip    image.jpeg   video.avi etc

如果存在,我想删除扩展程序。我怎样才能在Java中创建它?谢谢!

7 个答案:

答案 0 :(得分:30)

这样的东西
if (name.indexOf(".") > 0)
    name = name.substring(0, name.lastIndexOf("."));

索引检查可避免将“.profile”等隐藏文件转换为“”,而lastIndexOf()会处理cute.kitty.jpg等名称。

答案 1 :(得分:17)

答案 2 :(得分:5)

这是一个稍微强大的版本:

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

优雅地处理null,没有任何看起来像扩展的情况并且不会骚扰以.开头的文件,这也会处理.kitty.jpg问题。

这将处理受控环境中的大多数一般情况,如果后缀实际上不是扩展名,只有.分开,那么你需要添加一些检查以查看尾随部分是否实际上是一个扩展名你认。

答案 3 :(得分:4)

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

答案 4 :(得分:3)

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

在致电.之前,请检查文件名是否有substring()

答案 5 :(得分:2)

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

比较检查文件名本身是否包含.,否则字符串将保持不变。

答案 6 :(得分:0)

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

此解决方案的问题在于,根据您的要求,您需要扩展它以支持组合扩展,例如filename.tar.gz,filename.tar.bz2

[]的

过去

相关问题