Java:String split():我希望它在末尾包含空字符串

Rob*_* IV 64 java string split

我有以下字符串:

String str = "\nHERE\n\nTHERE\n\nEVERYWHERE\n\n";
Run Code Online (Sandbox Code Playgroud)

如果你只是打印它,它会像这样输出(当然\n不会"字面"打印):

\n
HERE\n
\n
THERE\n
\n
EVERYWHERE\n
\n
\n
Run Code Online (Sandbox Code Playgroud)

当我调用该方法时split("\n"),我希望获得新的line(\n)字符之间的所有字符串,甚至是最后的空字符串.

例如,如果我今天这样做:

String strArray[] = str.split("\n");

System.out.println("strArray.length - " + strArray.length);
for(int i = 0; i < strArray.length; i++)
    System.out.println("strArray[" + i + "] - \"" + strArray[i] + "\"");
Run Code Online (Sandbox Code Playgroud)

我希望它像这样打印出来(输出A):

strArray.length - 8
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"
strArray[6] - ""
strArray[7] - ""
Run Code Online (Sandbox Code Playgroud)

目前,它打印如下(输出B),并跳过任何结束的空字符串:

strArray.length - 6
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"
Run Code Online (Sandbox Code Playgroud)

如何使split()方法包含输出A中的空字符串?当然,我可以编写一个多行代码,但想知道,在我浪费时间尝试实现之前,如果有一个简单的方法或额外的两行左右的代码来帮助我.谢谢!

hob*_*bbs 133

使用str.split("\n", -1)(带有否定limit参数).如果split给定零或无limit参数,则丢弃尾随空字段,当给定正limit参数时,它将字段数限制为该数字,但限制意味着允许任意数量的字段而不丢弃尾随空字段.这在此处记录,行为来自Perl.


Ian*_*rts 7

单参数split方法被指定为忽略尾随空字符串拆分,但采用"limit"参数的版本保留它们,因此一个选项是使用具有大限制的该版本.

String strArray[] = str.split("\n", Integer.MAX_VALUE);
Run Code Online (Sandbox Code Playgroud)

  • 使用负限制比使用max int imho更好 (4认同)
  • +1 http://ideone.com/BQRyII (2认同)