Java Json String извлекает номер и заменяет определенный текст - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть текстовый файл в 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 json String ... затем я обновлю текстовый файл (файл json).

Спасибо!

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Вы можете построить вывод, используя 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();
0 голосов
/ 12 февраля 2019

Следующее должно работать.Вам нужно захватить жетоны.

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

    List<String> numbers = new ArrayList<>();
    while (matcher.find()) {
        String s = matcher.group(1);
        numbers.add(s);
    }
    for (String number: numbers) {

        json = json.replaceAll(String.format("NumberInt\\(%s\\)", number), number);
    }
    System.out.println(json);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...