【问题标题】:Grabbing substrings with same start but variable end and lenght in a String an add it to an Array在字符串中获取具有相同开头但可变结尾和长度的子字符串并将其添加到数组中
【发布时间】:2018-11-21 23:29:20
【问题描述】:

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

开头

"产品名称":",

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

"productName":"cucumber" 或 "productName":"tomatoes"

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

【问题讨论】:

  • 看起来您正在解析 JSON。您应该考虑为此使用库,而不是将整个键值对视为字符串。
  • @Mena 打败了我,但这听起来像是关于解析 JSON 的X-Y problem。
  • Leo A,你能给出几个示例输入及其对应的输出吗?
  • 请不要在 cmets 中添加更多信息。始终编​​辑/更新您的问题。
  • @GhostCat 好的,对不起,我下次会这样做:)

标签: java string arraylist substring


【解决方案1】:

它是一个网站的源代码,像这样 "detail":"id":"483303","nan":"483303","version":59640,"productName":"cucumber"," description":"detail":/PD1028378"}},"id":"1028378","nan":"1028378","version":27640,"productName":"bananas","description":

Java String 类是一个功能强大的类,具有许多实用方法,例如 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)));
    }

【讨论】:

  • 感谢您的回复。它是一个源代码,因此它不会在 "productName":"cucumber" 之后停止,它就像我给你的示例一样,[ ] 代表我想存储所有产品的数组列表
  • @LeoA。这正是我要求您提供几个样本的原因。我已经用你修改后的问题更新了我的答案。
  • 对不起,这是我的第一个问题,非常感谢您更新它,虽然我之前失败了。
猜你喜欢
  • 1970-01-01
  • 2012-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-19
  • 1970-01-01
  • 2021-06-02
相关资源
最近更新 更多