【发布时间】:2018-12-19 15:39:53
【问题描述】:
我正在使用一个提供 XML 的 API,我需要从一个实际上是字符串的标签中获取地图。示例:
拥有
Billable=7200,Overtime=false,TransportCosts=20$
我需要
["Billable"="7200","Overtime=false","TransportCosts"="20$"]
问题是字符串是完全动态的,所以,它可以像
Overtime=true,TransportCosts=one, two, three
Overtime=true,TransportCosts=1= 1,two, three,Billable=7200
所以我不能只用逗号分隔,然后用等号分隔。 是否可以使用正则表达式将类似的字符串转换为地图?
到目前为止我的代码是:
private Map<String, String> getAttributes(String attributes) {
final Map<String, String> attr = new HashMap<>();
if (attributes.contains(",")) {
final String[] pairs = attributes.split(",");
for (String s : pairs) {
if (s.contains("=")) {
final String pair = s;
final String[] keyValue = pair.split("=");
attr.put(keyValue[0], keyValue[1]);
}
}
return attr;
}
return attr;
}
提前谢谢你
【问题讨论】:
-
我认为你可以先用
=拆分然后再用,拆分。一些单元测试在这里会非常有用:) -
您给出的示例的预期结果是什么,到目前为止您尝试了什么?向我们展示您尝试过的示例代码及其给出的结果。
-
you 如何识别应该如何解析/拆分该字符串?你使用什么规则?
-
@Shar1er80 结果应该是 ["Overtime"="true","TransportCosts"="one, two, three"] ["Overtime"="true","TransportCosts"="1 = 1,2,3","Billable=7200"]
-
"所以我不能只用逗号分隔,然后用等号分隔。" 为什么?使用带限制的
split可以解决“TransportCosts=1=1”的问题
标签: java regex xml string hashmap