当前位置: 首页 > 面试题库 >

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

郁景龙
2023-03-14
问题内容

我有以下字符串:

String str = "\nHERE\n\nTHERE\n\nEVERYWHERE\n\n";

如果仅打印此内容,它将输出如下内容(当然\n不会“按字面意思”打印):

\n
HERE\n
\n
THERE\n
\n
EVERYWHERE\n
\n
\n

调用方法时split("\n"),我想获取新行(\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] + "\"");

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

strArray.length - 8
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"
strArray[6] - ""
strArray[7] - ""

当前,它以这种方式打印(输出B),并且所有结尾的空字符串都将被跳过:

strArray.length - 6
strArray[0] - ""
strArray[1] - "HERE"
strArray[2] - ""
strArray[3] - "THERE"
strArray[4] - ""
strArray[5] - "EVERYWHERE"

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


问题答案:

使用str.split("\n",-1)(带有否定limit参数)。当split给定零或无limit参数时,它将丢弃尾随的空字段,当给定正limit参数时,它将字段的数量限制为该数量,但是
负数
限制表示允许任意数量的字段并且不丢弃尾随的空字段。在此处进行了记录,其行为取自Perl。



 类似资料: