Java:拆分包含特殊字符的字符串

Din*_*oli 7 java regex string

我有一个字符串||81|||01||,我想用|符号分割字符串.

我这样做了,

String str = "||81|||01||";
System.out.println(str .split("\\|").length); //printing 6 . But I am expecting 8
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?| 如何将该字符串与该字符分开,以便获得预期的length(8)?

Mar*_*der 11

使用与limit split("\\|")相同split("\\|", 0),其中limit参数0告诉函数"省略尾随空字符串".所以你错过了最后两个空字符串.使用双参数版本并提供负数以获取所有部分(甚至尾随空部分):

str.split("\\|", -1)
Run Code Online (Sandbox Code Playgroud)


Mar*_*oun 8

打印:

System.out.println(Arrays.toString(str.split("\\|")));

你会明白它为什么要打印6.

您可以尝试使用public String [] split(String regex,int limit)执行您想要的操作:

limit参数控制模式的应用次数,因此会影响结果数组的长度.

所以你应该这样做:

System.out.println(str.split("\\|", -1).length);
Run Code Online (Sandbox Code Playgroud)

现在,打印数组将打印:

[, , 81, , , 01, , ] 如你所料.