当我在新项目中尝试此代码时,出现此错误:
java.lang.ArrayIndexOutOfBoundsException:第4行的0
String temp = "Capture.png";
System.out.println(temp);
String[] temp2 = temp.split(".");
System.out.println(temp2[0]);
主要操作是验证文件的扩展名,但是当我尝试这个时,分割功能不起作用。
答案 0 :(得分:3)
Java使用正则表达式来表示split参数,而句点表示正则表达式中的某些内容。
尝试逃避这段时间。
String temp = "Capture.png";
System.out.println(temp);
String[] temp2 = temp.split("\\.");
System.out.println(temp2[0]);
答案 1 :(得分:3)
你需要逃避这段时间,即它必须是temp.split("\\.")
。
否则,它会将句点视为"任何字符"。 由于任何字符都匹配字符串的所有字符,因此完整的字符串只会成为分隔符。由于分隔符不在拆分结果中,因此拆分结果为空。这就是你获得越界异常的原因。
答案 2 :(得分:1)
Java使用正则表达式作为方法split
的参数,如文档here
.
是表示正则表达式中所有字符的字符。所以你需要在代码中转义它,如下所示:
String temp = "Capture.png";
System.out.println(temp);
String[] temp2 = temp.split("\\.");
System.out.println(temp2[0]);
请注意,它使用两个\
进行转义,因为\
也是正则表达式中的控制字符,所以它也需要进行转义。