0

本质上,我想拿一堆:

<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
}

我不知道如何正确地将货币和汇率添加到哈希图中。

4

2 回答 2

3

(我看到您正在尝试使用正则表达式解析 XML。也许您应该考虑使用 XML 解析器,例如是否有更简单的方法来解析 Java 中的 XML?

首先,您的正则表达式是错误的,因为(.*)它太贪婪了。将其更改为:

Pattern p = Pattern.compile("<Cube\\scurrency='([^']*)'\\srate='([^']*)'/>");

这样'就不会匹配了。其次,该.put()方法仅在其 2 个参数中获取键和值。所以你可以使用:

list.put(matcher.group(1), matcher.group(2));
于 2012-09-21T14:28:45.603 回答
1

一个MapHashMap按键值对模型工作,如果你想添加我认为货币是你的关键的键和值对并评价你的价值,你会这样做,

map.put("$", matcher.group(1));

编辑:

尝试改进您的正则表达式,以便它为您提供两个不同的组,第一个是货币类型,第二组是您的货币值,然后将其放入您的地图

map.put(matcher.group(1), matcher.group(2));

对于正则表达式生成,我使用TX2RE,用它来生成正确的正则表达式。

于 2012-09-21T14:27:41.033 回答