给出如下文件名:
package.zip image.jpeg video.avi etc
如果存在,我想删除扩展程序。我怎样才能在Java中创建它?谢谢!
答案 0 :(得分:30)
像
这样的东西if (name.indexOf(".") > 0)
name = name.substring(0, name.lastIndexOf("."));
索引检查可避免将“.profile
”等隐藏文件转换为“”,而lastIndexOf()
会处理cute.kitty.jpg
等名称。
答案 1 :(得分:17)
使用Apache Commons IO,FilenameUtils.getBaseName(String filename)
或removeExtension(String filename)
,如果你也需要这条路径。
答案 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
[]的
过去