首页 > 解决方案 > Java Json String 提取数字并替换特定文本

问题描述

我在 json 中有一个文本文件,我想NumberInt(x)用数字替换x

在文本文件中,有 json 格式的记录/数据,其中有一个字段workYear: NumberInt(2010)作为示例。

我想workYear: 2010通过删除NumberInt(和替换它)。它NumberInt(x)位于文本文件中的任何位置,我想用它的编号替换所有它。

我可以搜索所有出现的这种情况,但我不确定如何仅用数值替换它。

String json = <json-file-content>

String sPattern = "NumberInt\\([0-9]+\\)";
Pattern pattern = Pattern.compile(sPattern);
Matcher matcher = pattern.matcher(json);

while (matcher.find()) {
    String s = matcher.group(0);
    int workYear = Integer.parseInt(s.replaceAll("[^0-9]", ""));
    System.out.println(workYear);
}

我想NumberInt(x)用数字值 int jsonString 替换所有...然后我将更新文本文件(json 文件)。

谢谢!

标签: javajsonregex

解决方案


StringBuilder您可以使用如下方式构建输出,有关其工作原理的信息,请参阅 JavaDoc 以获取appendReplacement

    String s = "workYear: NumberInt(2010)\nworkYear: NumberInt(2012)";
    String sPattern = "NumberInt\\([0-9]+\\)";
    Pattern pattern = Pattern.compile(sPattern);
    Matcher matcher = pattern.matcher(s);

    StringBuilder sb = new StringBuilder();

    while (matcher.find()) {
        String s2 = matcher.group(0);
        int workYear = Integer.parseInt(s2.replaceAll("[^0-9]", ""));
        matcher.appendReplacement(sb, String.valueOf(workYear));
    }
    matcher.appendTail(sb);

    String result = sb.toString();

推荐阅读