【问题标题】:How to convert comma separated and double quoted words string to list/array of strings in Java如何将逗号分隔和双引号的单词字符串转换为Java中的字符串列表/数组
【发布时间】:2021-03-02 10:50:55
【问题描述】:

我有以下输入字符串:

"["role_A","role_B","role_C"]"

我想将其转换为包含所有值(role_A、role_B、role_C)的字符串列表/数组。

我已经使用下面的代码完成了:

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

谁能建议使用Java8更清洁或更好的方法!

【问题讨论】:

  • roles.substring(2,roles.length()-2).split("\",\"") 或roles.replaceAll("\[\"|\"\]", "").split("\",\"");

标签: java string replace java-8


【解决方案1】:

如果字符串本身有引号,现有示例和替换引号的示例可能会中断。您可以使用 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

json.jar可以在Maven repo中找到

【讨论】:

    【解决方案2】:
    String s = "[\"role_A\",\"role_B\",\"role_C\"]";
    String[] res = s.split("\\[")[1].split(",");
    for (String str : res) {
        str = str.replace("]", "").replace("\"", "");
    }
    

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

    【讨论】:

      【解决方案3】:

      这应该可以解决问题:

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

      【讨论】:

        【解决方案4】:

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

        ObjectMapper mapper = new ObjectMapper();
                    List<String> list = mapper.readValue("[\"role_A\",\"role_B\"]",
                            mapper.getTypeFactory().constructCollectionType(List.class,
                            String.class));
        

        【讨论】:

          【解决方案5】:

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

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

          输出:

          [role_A, role_B, role_C]
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-04-11
            • 2013-02-04
            • 1970-01-01
            相关资源
            最近更新 更多