基本上,我想采取一些:
<Cube currency="USD" rate="1.2954"/>
并将它们放入格式为:
的散列图中String USD, String 1.2954
我有以下代码:
Map<String, String> list = new HashMap<String, String>();
Pattern p = Pattern.compile("<Cube\\scurrency='(.*)'\\srate='(.*)'/>");
Matcher matcher = p.matcher(currency_source);
while (matcher.find()) {
list.put(matcher.group(1)); // PROBLEMATIC
}
我不知道如何正确地将货币和费率添加到哈希地图。
答案 0 :(得分:3)
(我看到你正在尝试使用正则表达式解析XML。也许你应该考虑使用XML解析器,例如Is there an easier way to parse XML in Java?)
首先,你的正则表达式是错误的,因为(.*)
太贪心了。将其更改为:
Pattern p = Pattern.compile("<Cube\\scurrency='([^']*)'\\srate='([^']*)'/>");
以便'
不匹配。其次,.put()
method只需要在其2个参数中获取键和值。所以你可以使用:
list.put(matcher.group(1), matcher.group(2));
答案 1 :(得分:1)
Map
或HashMap
按键值对模型工作,如果您想添加键和值对,我认为货币是您的关键,并评估您的价值,您会这样做,
map.put("$", matcher.group(1));
编辑:
尝试改进您的正则表达式,以便它为您提供两个不同的组,第一组是货币类型,第二组是您将其放入地图的货币值
map.put(matcher.group(1),matcher.group(2));
对于正则表达式生成,我使用TX2RE,使用它来生成正确的正则表达式。