作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
String str="ABCD 1 key1=value1 key2=value2 key3=value3";
我想将上面的字符串转换成键值对
Map<String, String> map = new HashMap<String, String>();
如果我想访问key1,那么它应该返回value1例如:map.get("key1") 应该返回 value1。
请帮助我找到一种有效的方法将其转换为hashmap
。
最佳答案
可能最安全的方法是为键/值对定义正则表达式模式,然后迭代字符串,应用该模式。在这种情况下,我们可以尝试使用以下模式:
\b([^\s]+)=([^\s]+)\b
键和值将分别作为第一个和第二个捕获组提供。需要一些细微的处理,因为并非所有字符串都是键值(即主要内容不属于最终 map )。
Map<String, String> map = new HashMap<>();
String str="ABCD 1 key1=value1 key2=value2 key3=value3";
String pattern = "\\b([^\\s]+)=([^\\s]+)\\b";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(str);
while (m.find()) {
System.out.println("Found a key/value: (" + m.group(1) + ", " + m.group(2) + ")");
map.put(m.group(1), m.group(2));
}
上面的代码片段输出如下:
Found a key/value: (key1, value1)
Found a key/value: (key2, value2)
Found a key/value: (key3, value3)
关于java - 将字符串拆分为 hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47826665/
我是一名优秀的程序员,十分优秀!