如何在Java中将逗号分隔的双引号字符串转换为字符串列表/数组

如何在Java中将逗号分隔的双引号字符串转换为字符串列表/数组,java,string,replace,java-8,Java,String,Replace,Java 8,我有以下输入字符串: "["role_A","role_B","role_C"]" 我想将其转换为包含所有值(角色a、角色B、角色C)的字符串列表/数组 我已经使用了以下代码: String allRoles = roles.replace("\"","").replaceAll("\\[", "").replaceAll

我有以下输入字符串:

"["role_A","role_B","role_C"]"
我想将其转换为包含所有值(角色a、角色B、角色C)的字符串列表/数组

我已经使用了以下代码:

  String allRoles = roles.replace("\"","").replaceAll("\\[", "").replaceAll("\\]","").split(",");

任何人都可以建议更干净或更好的方法来使用Java8

如果字符串本身中有引号,则现有示例和带有替换引号的示例可能会中断。您可以使用JSONArray对其进行解析,然后根据需要将其转换为列表

String x = "[\"role_A\",\"role_B\",\"role_C\"]";
JSONArray arr = new JSONArray(x);
List<String> list = new ArrayList<String>();
for (Object one : arr) {
    list.add((String)one);
}
System.out.println(list); //prints [role_A, role_B, role_C]
System.out.println(list.size()); //prints 3
String x=“[\“角色A\”、“角色B\”、“角色C\””;
JSONArray arr=新JSONArray(x);
列表=新的ArrayList();
用于(对象一:arr){
列表。添加((字符串)一个);
}
系统输出打印项次(列表)//打印[角色A、角色B、角色C]
System.out.println(list.size())//印刷品3
json.jar
可以在


结果数组
res
是您想要的数组。

这应该可以做到:

String[] arr = s.substring(2, s.length()-2).split("\",\"");

最简单的解决方案是使用GSON或Jackson或任何Json转换器。 但是,如果您想手动执行此操作,可以使用正则表达式删除任何符号,并用逗号将其拆分。但我建议你改用图书馆,让你的生活更轻松

ObjectMapper mapper = new ObjectMapper();
            List<String> list = mapper.readValue("[\"role_A\",\"role_B\"]",
                    mapper.getTypeFactory().constructCollectionType(List.class,
                    String.class));
ObjectMapper mapper=new ObjectMapper();
List List=mapper.readValue(“[\”角色A\”,“\”角色B\”,
mapper.getTypeFactory().ConstructionCollectionType(List.class,
String.class);

实现这一点的一种方法是:

List<String> roles = Stream.of(rolesStr.replaceAll("[\"\\[\\]]","").split(",")).collect(Collectors.toList());

System.out.println(roles);
roles.substring(2,roles.length()-2).split(“\”,\”)或roles.replaceAll(“\[\”,\”).split(“\”,\”);
List<String> roles = Stream.of(rolesStr.replaceAll("[\"\\[\\]]","").split(",")).collect(Collectors.toList());

System.out.println(roles);
[role_A, role_B, role_C]