【发布时间】:2019-03-20 05:41:36
【问题描述】:
我有一个字符串abc____2019____5_10_40_56_20190319213500.pdf,我想替换date stamp之前的字符串。
谁能给个建议?
谢谢。
【问题讨论】:
-
分享您的代码。到目前为止你做了什么
-
检查我的答案,它可能对你有帮助!。
我有一个字符串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
在Matcher 中使用find 方法的另一种方法是使用此代码查找最后一个数字模式,然后是任何非数字模式,直到行尾,
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
【讨论】:
嘿嘿用时间戳的长度和字符串的长度来处理 this.please 我下面的代码会帮助你
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);
【讨论】: