如何在Java中从字符串修剪文件扩展名?

修剪Java后缀的最有效方法是什么,如下所示:


title part1.txt

title part2.html

=>

title part1

title part2


慕码人2483693
浏览 256回答 3
3回答

慕容708150

这是我们不应该自己做的代码。将库用于平凡的东西,为硬的东西而动脑子。在这种情况下,我建议使用FilenameUtils.removeExtension()从Apache的百科全书IO

湖上湖

由于在单行中使用String.substringand String.lastIndex很好,因此在能够处理某些文件路径方面存在一些问题。以以下路径为例:a.b/c使用单线将导致:a不对结果应该是c,但是由于文件没有扩展名,但是路径中有一个.名称为的目录,因此,单线方法被欺骗为路径的一部分提供文件名,这是不正确的。需要检查受skaffman答案的启发,我看了Apache Commons IO的FilenameUtils.removeExtension方法。为了重新创建其行为,我编写了新方法应满足的一些测试,这些测试如下:路径文件名-------------- --------a / b / cca / b / c.jpg ca / b / c.jpg.jpg c.jpg绝对/ ccab / c.jpg cab / c.jpg.jpg c.jpg抄送c.jpg cc.jpg.jpg c.jpg(这就是我检查过的全部内容-可能还有其他应被我忽略的检查。)实施以下是我对该removeExtension方法的实现:public static String removeExtension(String s) {    String separator = System.getProperty("file.separator");    String filename;    // Remove the path upto the filename.    int lastSeparatorIndex = s.lastIndexOf(separator);    if (lastSeparatorIndex == -1) {        filename = s;    } else {        filename = s.substring(lastSeparatorIndex + 1);    }    // Remove the extension.    int extensionIndex = filename.lastIndexOf(".");    if (extensionIndex == -1)        return filename;    return filename.substring(0, extensionIndex);}removeExtension通过上面的测试运行此方法会产生上面列出的结果。使用以下代码测试了该方法。由于它是在Windows上运行的,因此路径分隔符是\,\当用作String文字的一部分时,必须使用a对其进行转义。System.out.println(removeExtension("a\\b\\c"));System.out.println(removeExtension("a\\b\\c.jpg"));System.out.println(removeExtension("a\\b\\c.jpg.jpg"));System.out.println(removeExtension("a.b\\c"));System.out.println(removeExtension("a.b\\c.jpg"));System.out.println(removeExtension("a.b\\c.jpg.jpg"));System.out.println(removeExtension("c"));System.out.println(removeExtension("c.jpg"));System.out.println(removeExtension("c.jpg.jpg"));结果是:ccc.jpgccc.jpgccc.jpg结果是该方法应满足的测试中概述的期望结果。

FFIVE

顺便说一句,就我而言,当我想要快速解决方案以删除特定扩展名时,这大致就是我所做的:  if (filename.endsWith(ext))    return filename.substring(0,filename.length() - ext.length());  else    return filename;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java