谁能告诉我如何在没有扩展名的情况下获取文件名? 例子:
fileNameWithExt = "test.xml";
fileNameWithOutExt = "test";
谁能告诉我如何在没有扩展名的情况下获取文件名? 例子:
fileNameWithExt = "test.xml";
fileNameWithOutExt = "test";
当前回答
public static String getFileExtension(String fileName) {
if (TextUtils.isEmpty(fileName) || !fileName.contains(".") || fileName.endsWith(".")) return null;
return fileName.substring(fileName.lastIndexOf(".") + 1);
}
public static String getBaseFileName(String fileName) {
if (TextUtils.isEmpty(fileName) || !fileName.contains(".") || fileName.endsWith(".")) return null;
return fileName.substring(0,fileName.lastIndexOf("."));
}
其他回答
我的解决方案需要以下导入。
import java.io.File;
下面的方法应该返回所需的输出字符串:
private static String getFilenameWithoutExtension(File file) throws IOException {
String filename = file.getCanonicalPath();
String filenameWithoutExtension;
if (filename.contains("."))
filenameWithoutExtension = filename.substring(filename.lastIndexOf(System.getProperty("file.separator"))+1, filename.lastIndexOf('.'));
else
filenameWithoutExtension = filename.substring(filename.lastIndexOf(System.getProperty("file.separator"))+1);
return filenameWithoutExtension;
}
简单起见,使用Java的String.replaceAll()方法,如下所示:
String fileNameWithExt = "test.xml";
String fileNameWithoutExt
= fileNameWithExt.replaceAll( "^.*?(([^/\\\\\\.]+))\\.[^\\.]+$", "$1" );
当filenamewitheext包含完全限定路径时,这也可以工作。
对于Kotlin来说,它现在很简单:
val fileNameStr = file.nameWithoutExtension
com.google.common.io.Files
档案getNameWithoutExtension sourceFile。getName()。
能胜任一份工作吗
如果您的项目使用Guava(14.0或更新版本),则可以使用Files.getNameWithoutExtension()。
(本质上与Apache Commons IO中的FilenameUtils.removeExtension()相同,正如投票最多的答案所表明的那样。只是想指出番石榴也会这样。就我个人而言,我不想在commons中添加依赖项——我觉得这有点过时了——就是因为这个原因。)