如何将字符串排序到地图中并打印结果

时间:2011-07-14 10:00:59

标签: java string split hashmap

我有一个格式为nm=Alan&hei=72&hair=brown

的字符串

我想将此信息拆分,将转换添加到第一个值并以格式打印结果

nm Name Alan
hei Height 72
hair Hair Color brown

我已经看过使用split函数和hashmaps的各种方法,但没有运气拼凑起来。

任何建议对我都非常有用。

4 个答案:

答案 0 :(得分:3)

Map<String, String> aliases = new HashMap<String, String>();
aliases.put("nm", "Name");
aliases.put("hei", "Height");
aliases.put("hair", "Hair Color");

String[] params = str.split("&"); // gives you string array: nm=Alan, hei=72, hair=brown

for (String p : params) {
    String[] nv = p.split("=");
    String name = nv[0];
    String value = nv[1];
    System.out.println(nv[0] + " " + aliases.get(nv[0]) + " " + nv[1]);
}

我真的不明白你的问题是什么......

答案 1 :(得分:0)

HashMap由许多键值对组成。因此,当您使用split时,请设计适当的正则表达式(&amp;)。一旦有了字符串数组,就可以使用其中一个元素作为键(考虑哪个元素将成为最佳键)。但是,您现在可能想知道 - “如何将其余元素作为值放置?”。也许您可以创建一个新类来存储其余元素,并使用此类的对象作为hashmap的值。

然后打印变得容易 - 仅搜索相应键的值。该值将是一个对象;在此对象上使用适当的方法来检索元素,您应该能够打印所有内容。

另外,请记住在代码中处理异常。例如检查空值等。

另一件事:你的qn提到“排序”这个词。在这种情况下,我没有完全理解这意味着......

答案 2 :(得分:0)

尝试这样的事情:

static final String DELIMETER = "&"
Map<String,String> map = ...
map.put("nm","Name");
map.put("hei","Height");
map.put("hair","Hair color");

StringBuilder builder = new StringBuilder();
String input = "nm=Alan&hei=72&hair=brown"
String[] splitted = input.split(DELIMETER);
for(Stirng str : splitted){
     int index = str.indexOf("=");     
     String key = str.substring(0,index);
     builder.append(key);
     builder.append(map.get(key));
     builder.append(str.substring(index));
     builder.append("\n");
}

答案 3 :(得分:0)

Map<String, String> propsMap = new HashMap<String, String>();
Map<String, String> propAlias = new HashMap<String, String>();

propAlias.put("nm", "Name");
propAlias.put("hei", "Height");
propAlias.put("hair", "Hair Color");

String[] props = input.split("&");

if (props != null && props.length > 0) {
    for (String prop : props) {
        String[] propVal = prop.split("=");

        if (propVal != null && propVal.length == 2) {
            propsMap.put(propVal[0], propVal[1]);
        }
    }
}

for (Map.Entry tuple : propsMap.getEntrySet()) {
    if (propAlias.containsKey(tuple.getKey())) {
        System.out.println(tuple.getKey() + " " + propAlias.get(tuple.getKey()) + " " + tuple.getValue());
    }
}