我有一个字符串abc____2019____5_10_40_56_20190319213500.pdf
,我想替换date stamp
之前的字符串。
任何人都可以提出建议吗?
谢谢。
这有三种简单的方法。
非正则表达方式。只需使用_
拆分并使用此代码从数组中获取最后一项,
String s = "abc____2019____5_10_40_56_20190319213500.pdf";
String[] data = s.split("_");
System.out.println(data[data.length-1]);
打印,
20190319213500.pdf
正则表达式甚至更酷,有一个班轮代码。替换从开始到最后一次出现下划线的所有内容,
String s = "abc____2019____5_10_40_56_20190319213500.pdf";
System.out.println(s.replaceAll("^.*_", ""));
打印,
20190319213500.pdf
在find
中使用Matcher
方法的另一种方法是使用此代码找到最后一个数字模式,然后是任何非数字模式,直到行结束,
String s = "abc____2019____5_10_40_56_20190319213500.pdf";
Pattern p = Pattern.compile("\\d+\\D*$");
Matcher m = p.matcher(s);
if (m.find()) {
System.out.println(m.group());
} else {
System.out.println("Didn't find");
}
打印,
20190319213500.pdf
嘿使用时间戳的长度和字符串的长度来处理这个。请在下面的代码中帮助你
String sample = "abc____2019____5_10_40_56_20190319213500";
int lengthOfTimestamp = 25;
String value = sample.substring(sample.length() -lengthOfTimestamp ,sample.length());
System.out.println("value :"+value);
输出:
value : 5_10_40_56_20190319213500
不需要正则表达式:)只需按最后一次下划线拆分整个字符串:
String s = "abc____2019____5_10_40_56_20190319213500.pdf";
s = s.substring(0, s.lastIndexOf("_"));
或者,如果您之前要更换该部件,可以使用:
String s = "abc____2019____5_10_40_56_20190319213500.pdf";
s = "replacment" + s.substring(s.lastIndexOf("_") + 1);