title part1.txt
title part2.html
=>
title part1
title part2
Tags:
共 (6) 个答案
# 1 楼答案
顺便说一句,在我的例子中,当我想要一个快速的解决方案来删除一个特定的扩展时,我大致就是这么做的:
if (filename.endsWith(ext))
return filename.substring(0,filename.length() - ext.length());
else
return filename;
# 2 楼答案
String fileName="foo.bar";
int dotIndex=fileName.lastIndexOf('.');
if(dotIndex>=0) { // to prevent exception if there is no dot
fileName=fileName.substring(0,dotIndex);
}
# 1 楼答案
顺便说一句,在我的例子中,当我想要一个快速的解决方案来删除一个特定的扩展时,我大致就是这么做的:
# 2 楼答案
这是个骗人的问题吗p
我想不出比atm更快的方法了
# 3 楼答案
# 4 楼答案
# 5 楼答案
这是我们不应该自己编写的代码。利用图书馆来处理日常事务,把你的大脑用来处理困难的事情
在这种情况下,我建议使用来自Apache Commons IO的FilenameUtils.removeExtension()
# 6 楼答案
由于在一行程序中使用
String.substring
和String.lastIndex
很好,因此在处理某些文件路径方面存在一些问题以以下路径为例:
使用一个衬里将导致:
这是不对的
结果应该是
c
,但由于文件缺少扩展名,但路径有一个名称中带有.
的目录,因此单行程序方法被欺骗,将路径的一部分作为文件名,这是不正确的需要检查
受skaffman's answer的启发,我研究了Apache Commons IO的^{} 方法
为了重现其行为,我编写了新方法应该完成的几个测试,如下所示:
(这就是我检查的全部内容——我可能忽略了其他检查。)
实施
以下是我对
removeExtension
方法的实现:使用上述测试运行这个
removeExtension
方法可以得到上面列出的结果使用以下代码对该方法进行了测试。由于这是在Windows上运行的,因此路径分隔符是
\
,当用作String
文本的一部分时,必须使用\
进行转义结果是:
结果是该方法应达到的测试中概述的预期结果