【问题标题】:How to replace all string except specific part in string如何替换字符串中除特定部分以外的所有字符串
【发布时间】:2019-03-20 05:41:36
【问题描述】:

我有一个字符串abc____2019____5_10_40_56_20190319213500.pdf,我想替换date stamp之前的字符串。

谁能给个建议?

谢谢。

【问题讨论】:

  • 分享您的代码。到目前为止你做了什么
  • 检查我的答案,它可能对你有帮助!。

标签: java regex string java-8


【解决方案1】:

这里有三种简单的方法。

非正则表达式方式。只需使用_ 拆分并使用此代码从数组中获取最后一项,

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

【讨论】:

    【解决方案2】:

    嘿嘿用时间戳的长度和字符串的长度来处理 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
    

    【讨论】:

      【解决方案3】:

      不需要正则表达式 :) 只需按最后出现的下划线分割整个字符串:

      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);
      

      【讨论】:

        猜你喜欢
        • 2020-03-04
        • 1970-01-01
        • 1970-01-01
        • 2021-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多