为了账号安全,请及时绑定邮箱和手机立即绑定

如何将字符串转换为具有逗号分隔列表值的映射?

如何将字符串转换为具有逗号分隔列表值的映射?

长风秋雁 2023-11-01 21:58:52
我有一个格式为“[21:[1,2,3],22:[1,2,3]]”的字符串。我该如何将其转换为以列表作为值的键值映射?
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

去掉开头和结尾的[和]。21:[1,2,3],22:[1,2,3]

2.对]进行字符串分割,

  1. 对于每个元素,字符串再次拆分为:[。

    第一个元素是您的 Map 键 第二个元素(逗号分隔)可以使用数组转换转换为列表


查看完整回答
反对 回复 2023-11-01
?
慕标5832272

TA贡献1966条经验 获得超4个赞

一些直接的常规:


String s = "[21:[1,2,3],22:[1,2,3],23:[6:[1,2],7:[3,4]]]"

Map res = Eval.me s


assert [1,2,3] == res[22]

assert [3,4] == res[23][7]


查看完整回答
反对 回复 2023-11-01
?
炎炎设计

TA贡献1808条经验 获得超4个赞

  1. 删除方括号( [ ) removeAll("\\[","")

  2. 删除最后一个方括号 ( ] ,") 以及结尾的逗号 ( , ) 并替换为全冒号 ( : )removeAll("\\[",":")

  3. 替换字符串末尾的双方括号removeAll("\\]]","")

  4. 使用分割剩余的字符串split(":")

  5. 然后循环

String x =  "[21:[1,2,3],22:[1,2,3]]";


final HashMap<String,List<String>> test = new HashMap<>();


final String s = x.replaceAll("\\[", "").replaceAll("\\],", ":").

        replaceAll("\\]]", "");


 final String[] split = s.split(":");


for(int i =0;i<split.length;i++)

    test.put(split[i],Arrays.asList(split[++i]));


test.forEach((k,v)-> System.out.println(k +" " +v))

结果

https://img1.sycdn.imooc.com/654259d40001539306510093.jpg

查看完整回答
反对 回复 2023-11-01
  • 3 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信