Java empty String split ArrayIndexOutOfBoundsException

ton*_*i07 4 java string split

我在Java中的String的split函数中遇到了一个意外的特性,这是我的代码:

final String line = "####";
final String[] lineData = line.split("#");
System.out.println("data: " + lineData[0] + " -- " + lineData[1]);
Run Code Online (Sandbox Code Playgroud)

这段代码给了我一个ArrayIndexOutOfBoundsException,而我希望它打印""和""(两个空字符串),或者可能是null和null(两个空字符串).

如果我改变我的代码

final String line = " # # # #";
final String[] lineData = line.split("#");
System.out.println("data: " + lineData[0] + " -- " + lineData[1]);
Run Code Online (Sandbox Code Playgroud)

然后它打印""和""(预期的行为).

如何让我的第一个代码不抛出异常,并给我一个空字符串数组?

谢谢

Sya*_*m S 8

您可以使用split方法的limit属性来实现此目的.尝试

final String line = "####";
final String[] lineData = line.split("#", -1);
System.out.println("Array length : " + lineData.length);
System.out.println("data: " + lineData[0] + " -- " + lineData[1]);
Run Code Online (Sandbox Code Playgroud)