删除文件的扩展名
给出如下文件名:
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
[]的
和过去