我想您可以使用正则表达式来匹配 '=' 和 ',' 之间的匹配项,假设您知道属性名称、已关闭等始终按该顺序存在并且它们不包括 '='、',' 和 '] ' 在他们的价值观中。
Pattern p = Pattern.compile("=.*?[,\\]]");
List<String> matches = new ArrayList<String>();
Matcher matcher = p.matcher(value);
while(matcher.find()) {
matches.add(matcher.group(0));
}
com.atlassian.greenhopper.service.sprint.Sprint@719c9e23[name=Sprint 1,close=true,startDate=2013-04-10T17:58:49.228-07:00,endDate=2013-04-24T17:58:49.228 -07:00,completeDate=2013-04-16T14:42:09.504-07:00,id=10]
根据您的示例匹配,现在将包含以下字符串:
- 名称=冲刺 1,
- 关闭=真,
- 开始日期=2013-04-10T17:58:49.228-07:00,
- 结束日期=2013-04-24T17:58:49.228-07:00,
- 完成日期=2013-04-16T14:42:09.504-07:00,
- id=10]
我猜你可以从这里拿走。
编辑:正则表达式是否是一个好方法,这种数据格式看起来很像来自类似的返回值
public String toString() {
return super.toString() + ... ;
}
另外,再想一想,如果真的没有比解析这种格式的其他选择,我会明确匹配属性,例如使用 regex "name=.*?," for name