java - 在字符串中获取具有相同开始但可变结束和长度的子字符串并将其添加到数组
问题描述
我正在寻找一种方法来捕获巨大字符串中的所有子字符串。子字符串都以:
“产品名称”:” ,
在冒号后面的引号之后,子字符串的结尾和长度明显不同,但它们的最后都有这样的引号:
“产品名称”:“黄瓜”或“产品名称”:“西红柿”
我自己已经试过了,但是我的代码在第一次比赛后就停止了(后来我发现这是什么indexOf
:D),我怎样才能得到每个子字符串并将其添加到 ArrayList ?
ArrayList<String> nameList = new ArrayList<>();
String productName = "\"productName\":\"";
String tmp = "";
char endPoint = '"';
int lastIndex = unmodifiedSourceCode.indexOf(productName) + 15;
for (int i = 0; i < 10; i++) {
if (unmodifiedSourceCode.charAt(lastIndex + i) != endPoint) {
tmp += unmodifiedSourceCode.charAt(lastIndex + i);
}
}
nameList.add(tmp);
我刚开始使用Java。
编辑:我正在使用的源代码的更长示例
"id":"483303","nan":"483303","version":59640,"productName":"cucumber","description":"detail":/PD1028378"}},"id":"1028378 ","nan":"1028378","version":27640,"productName":"bananas","description":
解决方案
它是一个网站的源代码,像这样 "detail":"id":"483303","nan":"483303","version":59640,"productName":"cucumber","description": "detail":/PD1028378"}},"id":"1028378","nan":"1028378","version":27640,"productName":"bananas","description":
JavaString
类是一个功能强大的类,具有许多实用方法,例如 indexOf 或 subString。您可以通过以下方式提取产品名称:
ArrayList<String> nameList = new ArrayList<>();
String[] tmpArray = unmodifiedSourceCode.split("\"productName\":");
for(int i=1; i < tmpArray.length; i++) {
nameList.add(tmpArray[i].substring(1, tmpArray[i].indexOf("\"", 1)));
}
推荐阅读
- reactjs - 数组处理中的 React Hook 错误 useEffect() 和 setState 未设置状态
- java - 有没有办法使用矩阵而不是循环来调整图像的伽玛?
- javascript - 我如何判断一个变量是否会在不抛出的情况下传播到散列中?
- php - 如何在 PHP 中通过 guzzle HTTP 发送动态模板邮件
- javascript - JS根本没有触发
- angular - tsconfig.json 包含属性
- python - 在记录语句之前和之后提取源代码行
- excel - 如何使用公式获取自定义文档属性
- terraform - 在 Terraform 中,如何定义对象列表?
- c++ - 自定义字符串类中的 C++ 重载 += 运算符更好的实现