【问题标题】:Extract date from a string in java从java中的字符串中提取日期
【发布时间】:2018-02-05 19:31:19
【问题描述】:

我有一个字符串如下:

String str = "skip=anthing&id='234234432234' and (timestamp le 2017-01-17T05:05:55:358Z and timestamp ge 2017-01-17T08:05:55:358Z)&format=json";

我想从字符串中提取日期部分,将其放在单引号内并将其替换回原始字符串。

结果字符串应该是

String str = "skip=anything&id='234234432234' and (timestamp le '2017-01-17T05:05:55:358Z' and timestamp ge '2017-01-17T08:05:55:358Z')&format=json"

【问题讨论】:

    标签: java string date string-matching


    【解决方案1】:

    您可以使用以下正则表达式

    String input = "skip=anthing&id='234234432234' and (timestamp le 2017-01-17T05:05:55:358Z and timestamp ge 2017-01-17T08:05:55:358Z)&format=json";
    String output = input.replaceAll("(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}:\\d{3}Z)", "'$1'");
    System.out.println(output); // skip=anthing&id='234234432234' and (timestamp le '2017-01-17T05:05:55:358Z' and timestamp ge '2017-01-17T08:05:55:358Z')&format=json
    

    【讨论】:

    • 或者如果您不喜欢 '[0-9]' 格式,只需将 '\d' 用于任何数字。所以java正则表达式将是: "(\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2} :\\d{3}Z)"
    • @Novy 是的,你是对的。我错误地认为 \d{n} 不会匹配以零开头的数字,例如01. 我更新了我的答案。
    • 感谢@Novy 的帮助。
    • 我意识到我在查看您的答案时不小心对您的答案投了反对票(5 天后才刚刚意识到这一点)。您可以编辑它(不需要更改任何内容)以便我可以撤消它吗?
    • @Mar Dev 尝试投赞成票,这可能会撤消我们的反对票。
    猜你喜欢
    • 1970-01-01
    • 2011-02-17
    • 2016-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多