首页 > 解决方案 > 在字符串中获取具有相同开始但可变结束和长度的子字符串并将其添加到数组

问题描述

我正在寻找一种方法来捕获巨大字符串中的所有子字符串。子字符串都以:

“产品名称”:” ,

在冒号后面的引号之后,子字符串的结尾和长度明显不同,但它们的最后都有这样的引号:

“产品名称”:“黄瓜”或“产品名称”:“西红柿”

我自己已经试过了,但是我的代码在第一次比赛后就停止了(后来我发现这是什么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":

标签: javastringarraylistsubstring

解决方案


它是一个网站的源代码,像这样 "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)));
    }

推荐阅读