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
相关产品推荐
相关产品推荐

