如何在特定字符后替换字符串

时间:2017-04-27 09:33:42

标签: java

我有一个像

这样的字符串
s = "x = 123 & y = abc & dateFrom >= 1234500000 & dateTo <= 654870000"

1234500000 654870000 是时间戳,我想用yyyy-mm-dd替换日期,我知道如何转换它们。我的问题是如何在java中替换它们。知道时间戳没有修复

2 个答案:

答案 0 :(得分:1)

您可以使用模式匹配:

    String s = "x = 123 & y = abc & dateFrom >= 1234500000 & dateTo <= 654870000";
    Pattern p = Pattern.compile("dateFrom >= (\\d+) &");
    Matcher m = p.matcher(s);
    if (m.find())
            s = s.replace(m.group(1), "ABC"); //replace timestamp from

    p = Pattern.compile("dateTo <= (\\d+)");
    m = p.matcher(s);
    if (m.find())
        s = s.replace(m.group(1), "DEF"); //replace timestamp to

    System.out.println(s);

输出:

x = 123 & y = abc & dateFrom >= ABC & dateTo <= DEF

答案 1 :(得分:0)

首先,您可以使用cmos_cells.lib提取长片。

counter.ys

为了不将Pattern视为日期,请考虑使用一些min&amp;最大值或仅在Pattern pattern = Pattern.compile("(\\d+)"); Matcher matcher = pattern.matcher(s); while(matcher.find()) { ... } 之后开始尝试查找日期。

然后,您可以例如解析所有123,将它们转换为日期并提供dateFrom,其中包含long的字符串表示作为键和文本表示日期作为价值。

完成后,您可以在地图上进行迭代,并为地图中的每个条目调用Map

long

警告:您将无法解析String.replaceAll(key, value)之前的日期(时间戳= 0)。