我想拆分一个文件名为String的文件名(例如:DIS_LU0786738343_20170608.pdf,KID_AMEV_20170608.pdf,Evolution-DIS_20170512.csv,Offres-invest_20170608.csv,OST_20170608.csv)以获取最后一部分。
例如,对于字符串DIS_LU0786738343_20170608.pdf
,我只想获得20170608
,它将在Date
对象上进行转换。
我一直在谷歌搜索,我找到了使用Regular Expressions
的解决方案:
String regex = "some regex expression";
String fileName = "DIS_LU0786738343_20170608.pdf";
System.out.println(Arrays.toString(fileName.split(regex)));
这将返回如下数组:[DIS_LU0786738343_, 20170608]
所以任何人都可以帮我制作正则表达式吗?
答案 0 :(得分:1)
String fileName = "DIS_LU0786738343_20170608.pdf";
int startIdx = fileName.lastIndexOf("_");
int endIdx = fileName.lastIndexOf(".");
String finalStr=fileName;
if (startIdx > 0 && endIdx > 0)
finalStr = fileName.substring(startIdx + 1, endIdx);
System.out.println(finalStr);
我认为这应该适合你。
答案 1 :(得分:0)
我放弃了RegEx的事情,找到了另一个解决方案,我想与将来需要它的人分享:
private LocalDate getDateFromPriipsDoc(File file) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String fileName = FilenameUtils.getBaseName(file.toString());
String dateInString = fileName.substring(fileName.lastIndexOf("_") + 1);
return LocalDate.parse(dateInString, formatter);
}
不要犹豫与RegEx分享另一个解决方案;)