2

例如

String splits[] = ("||").split("[|]") 

System.out.println(splits.length) 返回 0。而我希望它返回 2。解决此问题的最佳方法是什么?

4

2 回答 2

6

的默认操作split()是丢弃尾随的空字符串。由于每个结果字符串都是空的,因此不会返回任何字符串。

更准确地说,调用与将第二个参数设置为 0 的split(String)调用相同。split(String, int)

0 表示(强调我的):

...该模式将被应用尽可能多次,数组可以有任意长度,并且尾随的空字符串将被丢弃。

如果您想保留尾随空字符串(并且不想限制元素的数量),请传入一个负值(我建议 -1):

String splits[] = "||".split("\\|", -1);
于 2012-06-06T06:02:41.450 回答
0

当对以分隔符结尾的字符串调用 split 时,结束分隔符将被丢弃。

例如,所有这些都是相同的:

"X|Y|Z|||".split([|]).length
"X|Y|Z||".split([|]).length
"X|Y|Z|".split([|]).length
"X|Y|Z".split([|]).length

_注意您放在|括号中,因为|它是正则表达式中的元字符。

于 2012-06-06T06:05:20.340 回答