我是JAVA的初学者。我想将session
和max-age
的值存储在hashmap
中,并且作为响应,我正在接收这种类型的字符串。我怎么能做到这一点。
session=e6cb242ea51874c73d0f323dfgdf5455e4c; path=/; max-age=43200; HttpOnly
预先感谢
答案 0 :(得分:0)
可以使用类似以下的基本方法:
{
HashMap<String, String> resultMap = new HashMap<>();
String data = "session=e6cb242ea51874c73d0f323dfgdf5455e4c; path=/; max-age=43200; HttpOnly";
String[] dataArr = data.split("; ");
String session = null;
String maxAge = null;
for (String part : dataArr) {
if (part.startsWith("session")) {
session = part.split("=")[1];
}
if (part.startsWith("max-age")) {
maxAge = part.split("=")[1];
}
}
if (session != null && maxAge != null) {
resultMap.put(session, maxAge);
}
}
答案 1 :(得分:0)
使用以下代码
String str="session=e6cb242ea51874c73d0f323dfgdf5455e4c; path=/; max-age=43200; HttpOnly";
String array[]=str.split("\\;");
Map<String,String> map=new HashMap<>();
for(String s:array){
String ss[]=s.split("\\=");
if(ss.length==2)
map.put(ss[0].trim(), ss[1].trim());
}
for(Map.Entry<String, String> m:map.entrySet()){
System.out.println(m.getKey()+"/"+m.getValue());
}
答案 2 :(得分:0)
如果您使用的是Java 8+,则可以轻松使用:
String input = "session=e6cb242ea51874c73d0f323dfgdf5455e4c; path=/; max-age=43200; HttpOnly";
Map<String, String> result = Arrays.asList(input.split(";\\s*")).stream()
.filter(s -> s.contains("session") || s.contains("max-age"))
.map(s -> s.split("="))
.collect(Collectors.toMap(s -> s[0], s -> s[1]));
输出
session=e6cb242ea51874c73d0f323dfgdf5455e4c
max-age=43200
编辑
...我正在获取标头字段为
List<String> List<String> cookies = connection.getHeaderFields().get("Set-Cookie");
在这种情况下,您可以改用flatMap:
List<String> cookies = ...;//Some data
Map<String, String> result = cookies.stream()
.flatMap(c -> Arrays.stream(c.split(";\\s*")))
.filter(s -> s.contains("session") || s.contains("max-age"))
.map(s -> s.split("="))
.collect(Collectors.toMap(s -> s[0], s -> s[1]));