从ArrayList查询字符串的一部分

时间:2016-11-22 05:37:02

标签: java arraylist substring couchbase

我在Java中使用下面的couchbase查询来获取特定值的数组列表。

Statement statement = select("PlanningId").from(i(CouchbaseBucket.RangePlan.toString()))
                         .where(x("meta().id").like(s("PRODUCTOPTION%")).and(x("Status").eq(s("Ready"))));

    String[] planningIDs = couchbaseRepository.getQueryResult(bucket, statement);

这将输出返回为:

[{"PlanningId":"PRODUCTPLANNING_666"}, {"PlanningId":"PRODUCTPLANNING_777"}]

我只需要输出值:

[{"PRODUCTPLANNING_666"}, {"PRODUCTPLANNING_777"}]

我无法使用子字符串或拆分来获取此信息。 我怎么做到这一点?

由于 Emraan

1 个答案:

答案 0 :(得分:1)

如评论中所述,在每个查询中,如果返回的结果包含单个String,如:{"PlanningId":"PRODUCTPLANNING_666"}, {"PlanningId":"PRODUCTPLANNING_777"},....,则只能提取{"PRODUCTPLANNING_XXX"},...所需部分的过程可以作为如下:

假设您有像

这样的字符串

String planningIds = {"PlanningId":"PRODUCTPLANNING_666"}, {"PlanningId":"PRODUCTPLANNING_777"},....{"PlanningId":"PRODUCTPLANNING_NNN"}

如果您想在单个{"PRODUCTPLANNING_XXX}中捕获每个String

StringBuilder finalResult = new StringBuilder();
        String[] results = allPlanningIds.split(",");
        for(String eachPlanningId : results){
            String[] resultPlanningIds = eachPlanningId.split(":");
            if(resultPlanningIds.length != 2){
                continue;
            }
            String result = "{" + resultPlanningIds[1];
            finalResult = finalResult.append(result + ",");
        }
        System.out.println(finalResult);

或者如果您想在{"PRODUCTPLANNING_XXX}中将每个String抓取为单独的ArrayList个对象,请在上面的代码段中将StringBuilder finalResult = new StringBuilder();更改为List<String> finalResults = new ArrayList<>();

finalResult = finalResult.append(result + ",");finalResults.add(result)

我希望这就是你要找的东西。

注意:请检查String[] results数组的结束/空条件。