如何将 [A,B,C] 之类的字符串拆分为 A B C (Java)

How can I split a String like [A,B,C] into A B C (Java)

对于像 [A,B,C] 或逗号和括号之间的输入,我如何拆分字符串以将其添加到列表中?

我有这个:

List<String> list = new ArrayList<String>();
String a = "[A,B,C]";
String str[] = a.split(",|\[|\]");
list = Arrays.asList(str);
System.out.println(list);

但输出是:[, A, B, C]

如何拆分此字符串以将其添加到列表中? 我想要列表 = [A,B,C]

一个简单的解决方案是在按逗号拆分之前替换括号。

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        String a = "[A,B,C]";
        String str[] = a.replaceAll("[\[\]]", "").split(",");
        list = Arrays.asList(str);
        System.out.println(list);
    }
}

输出:

[A, B, C]

省略括号,比使用.replaceAll:

a = a.substring(1, a.length() - 1); // Substringing removes first and last character
String[] str = a.split(",");

使用正则表达式的解决方案:

public static void main(String[] args) {

    List<String> list = new ArrayList<String>();
    String a = "[A,B,C]";

    Pattern p = Pattern.compile("\w+");
    Matcher m = p.matcher(a);
    while(m.find()) {
        list.add(m.group());
    }

    System.out.println(list); //[A,B,C]
}

匹配输入字符串中的所有字母并将它们一一添加到列表中。

一个简单的方法是去掉括号并用逗号分隔。然后你可以流式传输数组并进入列表。

String s = "[AAAA,   BBBB ,  CCCCC,DDDDDD]";
List<String> list =
        Arrays.stream(s.replaceAll("[\[\]]","").split("\s*,\s*"))
                .collect(Collectors.toList());
list.forEach(System.out::println);

打印


AAAA
BBBB
CCCCC
DDDDDD