我在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);
}
我想用数字值int NumberInt(x)
字符串替换所有json
,然后更新文本文件(json文件)。
谢谢!
答案 0 :(得分:1)
以下内容应该有效。您需要捕获令牌。
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);
答案 1 :(得分:1)
您可以使用StringBuilder
构建输出,如下所示,
有关其工作原理的信息,请参见JavaDoc for 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();