为什么我不能用"." 作为split()函数的分隔符?

DT7*_*DT7 5 java xls exception delimiter indexoutofboundsexception

我必须输入一个输入文件,并在其末尾添加一个数字作为输出文件.为此,我使用以下代码:

String delimiter = ".";
String[] splitInput = inputLocation.split(delimiter);
String outputLocation = splitInput[0];
Run Code Online (Sandbox Code Playgroud)

我得到以下异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
Run Code Online (Sandbox Code Playgroud)

我添加了以下语句来检查splitInput数组的长度,并得到0作为输出.

System.out.println(splitInput.length);
Run Code Online (Sandbox Code Playgroud)

后来,我使用".x"作为分隔符(我的文件是.xls).我可以使用".x"来实现我的目的,但我很好奇为什么不会"." 工作?

ug_*_*ug_ 11

split函数使用正则表达式,你必须逃避你的"." 用"\"

使用正则表达式时"." 意味着任何角色.试试这个

String delimiter = "\\.x";
Run Code Online (Sandbox Code Playgroud)

还应该提到的是\,java中也是一个用于创建其他特殊字符的特殊字符.所以你必须逃避你\与另一个\因此 "\\.x"


Java文档中有关于所有特殊字符及其功能的一些很好的文档:

Java 8 Docs
Java 7 Docs
Java 6 Docs