java - 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 json
String 替换所有...然后我将更新文本文件(json 文件)。
谢谢!
解决方案
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();
推荐阅读
- amazon-web-services - 如何配置 elb 和服务器之间的 keep-alive 时间?
- c++ - 类初始化中的静态 lambda
- hyperledger-fabric - 如何在 Hyperledger Composer of Fabric 的不同通道中处理一个通道中引发的事件?
- c# - 避免“引入 FOREIGN KEY 约束可能导致循环或多个级联路径”
- javascript - AJAX 后生成的链接不起作用
- vba - 经典的 asp 布尔到字符串语言
- macos - 如何使用原生 API 在 MacOS 上获取设备像素比?
- c# - Web api 代码 - 加载失败 - 访问控制允许来源
- react-native - 通常在通过socket.io发送imagedata时断开连接
- x86 - 32 位与 64 位系统 - 内存限制是位还是字节?