java - 如何使用 StringTokenizer 将字符串存储到 HashMap 中

标签 java stringtokenizer

String input = "key1=value1&key2=value2&key3=value3&key4=value4&key5=value5";

如何使用 StringTokenizer 将键值对存储到 HashMap 对象中?

最佳答案

我猜使用 StringTokenizer 看起来像这样。

String input = "key1=value1&key2=value2&key3=value3&key4=value4&key5=value5";
StringTokenizer st = new StringTokenizer(input, "&");

Map<String, String> map = new HashMap<String, String>();

while ( st.hasMoreElements() ) {

    String actualElement = st.nextToken();
    StringTokenizer et = new StringTokenizer(actualElement, "=");

    if ( et.countTokens() != 2 ) {
        throw new RuntimeException("Unexpeced format");
    }

    String key = et.nextToken();
    String value = et.nextToken();

    map.put(key, value);
}

System.out.println(map);

您还可以使用 String.split()。我认为它看起来更好一些。

Map<String, String> map = new HashMap<String, String>();

for ( String actualElement : input.split("&") ) {
    map.put(actualElement.split("=")[0],
            actualElement.split("=")[1]);
}

System.out.println(map);

请注意,您必须确保分隔符(在本例中为“=”和“&”)不允许出现在数据中!当应允许分隔符出现在数据中时,必须以某种方式对它们进行转义以正确处理输入。

关于java - 如何使用 StringTokenizer 将字符串存储到 HashMap 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6982993/

相关文章:

java - StringTokenizer 显示不需要的结果

java - 只是 'DELETE' 请求方法不支持

java - 将整数插入 TreeMap

java - 在 Java 测试框架中使用自定义 equals 方法断言两个集合相等

java - 如何重用 StringTokenizer 对象

Java字符串分离

java - 如果在第一个作业之后我们在控制台输出中获得了特定值,如何在 Jenkins 中运行第二个作业

java - 如何更改 slick2d 左上角图标

java - 为什么在 Java 中 "!sort.getTestIssue().equals("Y")"不从 nasdaqlisted.txt 中删除测试股票?

php - 在PHP中,如何实现和Java中StringTokenizer一样的目的?