You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java基于自定义逻辑拆分字符串并提取指定目标子串的方法

Java提取指定路径下不带后缀的文件名方案

方案1:标准API实现(推荐)

直接使用Java NIO自带的Paths工具类处理,适配所有操作系统的路径分隔符,兼容性和规范性最好:

import java.nio.file.Paths;

public class FileNameExtractor {
    public static void main(String[] args) {
        String path = "target/abcd12345671.csv";
        // 第一步:提取完整文件名(去掉前面的路径部分)
        String fullFileName = Paths.get(path).getFileName().toString();
        // 第二步:去掉后缀,得到目标子串
        String target = fullFileName.substring(0, fullFileName.lastIndexOf('.'));
        System.out.println(target); // 输出:abcd12345671
    }
}

优势:无需手动处理路径分隔符,即使后续路径格式变更为Windows风格的target\\abcd12345671.csv也能正常工作,符合Java编码规范

兼容特殊场景的优化

如果存在文件名带多个.、或者文件没有后缀的情况,添加索引判断避免越界:

String fullFileName = Paths.get(path).getFileName().toString();
int dotPos = fullFileName.lastIndexOf('.');
String target = dotPos > 0 ? fullFileName.substring(0, dotPos) : fullFileName;

方案2:快速字符串分割(仅适合固定格式场景)

如果你能确定输入字符串的格式固定为前缀/文件名.后缀,没有嵌套路径、没有多个.,可以用更简短的分割写法:

String path = "target/abcd12345671.csv";
String target = path.split("/")[1].split("\\.")[0];

注意:该写法不通用,路径包含多个层级、文件名包含多个.时会得到错误结果,仅适合临时脚本类的固定场景使用


内容的提问来源于stack exchange,提问作者Vivek Agrawal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 06:24:04