删除文件的扩展名

给出如下文件名:

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 ,没有任何看起来像扩展的情况,并且不会骚扰以a开头的文件. ,这也处理.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; 

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

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

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

[]的

和过去