使用任意数量的逗号和空格拆分字符串

Abo*_*ank 10 java regex

我有一个字符串,我试图变成一个列表,但我得到空条目.

",A,B,C,D, ,,,"
returns
[, A, B, C, D,  , , ,]
Run Code Online (Sandbox Code Playgroud)

我想删除所有"空"逗号:

[A, B, C, D]
Run Code Online (Sandbox Code Playgroud)

我尝试着

current.split(",+\\s?")
Run Code Online (Sandbox Code Playgroud)

这不会产生我想要的结果.我应该使用什么正则表达式呢?

Boh*_*ian 15

您需要两个步骤,但只需要一行:

String[] values = input.replaceAll("^[,\\s]+", "").split("[,\\s]+");
Run Code Online (Sandbox Code Playgroud)

调用replaceAll()删除前导分隔符.
拆分是在任意数量的分隔符上完成的.

行为split()意味着忽略尾随空白值,因此在拆分之前无需修剪尾随分隔符.

这是一个测试:

public static void main(String[] args) throws Exception {
    String input = ",A,B,C,D, ,,,";
    String[] values = input.replaceAll("^[,\\s]+", "").split("[,\\s]+");
    System.out.println(Arrays.toString(values));
}
Run Code Online (Sandbox Code Playgroud)

输出:

[A, B, C, D]
Run Code Online (Sandbox Code Playgroud)