发布于2026-07-06 阅读(0)
扫一扫,手机访问
在Ja va中,利用String.substring()截取文件后缀是一个常见操作。核心流程是:先用lastIndexOf(".")定位最后一个点号的位置,然后判断该位置是否合法——必须大于0且小于字符串长度减1,最后调用substring(dotIndex + 1)提取后缀。对于没有点、点在末尾这类边界情况,需返回空字符串。

直接用String.substring()截取文件后缀名,关键在于准确定位最后一个点(.)的位置。后缀名就是最后一个点之后的部分,不包含点本身。下面一步步拆解具体做法。
使用lastIndexOf(".")方法,可以获取最后一个点在字符串中的索引。需要注意:如果文件名本身没有点(比如README),或者以点开头(比如.gitignore),就要额外做判断,避免返回 -1 或者截取出错。
如果lastIndexOf(".")的结果等于 -1,说明没有点,自然也就没有标准后缀;如果点在末尾(比如name.),那后缀就为空。另外,还需要排除点在路径分隔符之后、但实际属于目录名的情况(比如/path.to/file.txt中的path.to是目录名,不是后缀)。当然,如果只是处理纯文件名字符串,关注最后一个点就足够了。
当确定最后一个点的索引为dotIndex,并且满足dotIndex > 0且dotIndex < str.length() - 1时,用substring(dotIndex + 1)就能获取到后缀。看几个例子就清楚了:
"a/b/c.txt".substring("a/b/c.txt".lastIndexOf(".") + 1) → "txt""archive.tar.gz".substring("archive.tar.gz".lastIndexOf(".") + 1) → "gz"(只取最后一段)"tar.gz"),需要更复杂的逻辑,单纯substring不支持多级后缀的自动识别。可以封装成一行带保护的表达式,这样能优雅地避开无点、结尾为点等边界问题:
String ext = fileName.lastIndexOf(".") > 0 && fileName.lastIndexOf(".") < fileName.length() - 1 ? fileName.substring(fileName.lastIndexOf(".") + 1) : "";
这个写法把判断和截取合并在一起,既简洁又安全,推荐在实战中直接使用。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8