我在 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"}]
我无法使用子字符串或拆分来获取它。 我该如何实现这一目标?
谢谢 埃姆兰
最佳答案
就像评论中提到的,在每个查询中,如果返回的结果包含单个 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
的结束/空条件。数组。
关于java - 从 ArrayList 中查询字符串的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40734496/