删除文件的扩展名

Add*_*dev 16 java regex

给出如下文件名:

 package.zip    image.jpeg   video.avi etc
Run Code Online (Sandbox Code Playgroud)

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

Ern*_*ill 35

就像是

if (name.indexOf(".") > 0)
    name = name.substring(0, name.lastIndexOf("."));
Run Code Online (Sandbox Code Playgroud)

索引检查避免将像" .profile" 这样的隐藏文件转换为"",并且lastIndexOf()可以处理名称cute.kitty.jpg.

  • 但是,它也会[保留](http://ideone.com/NS2iH)`.kitty.jpg`,而不删除`.jpg`.这可能是也可能不是. (5认同)
  • 您可以执行`name.lastIndexOf(“。”)> 0`来代替`name.indexOf(“。”)> 0`,它将从.kitty.jpg`中删除.jpg,同时将其保留为` .kitty` (2认同)

小智 7

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

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

优雅地处理null,没有什么看起来像扩展的情况,并没有骚扰以a开头的文件.,这也处理.kitty.jpg问题.

这将处理受控环境中的大多数一般情况,如果后缀实际上不是扩展名,只.需要分隔,然后您需要添加一些检查以查看尾随部分是否实际上是您识别的扩展名.