为什么这段代码不起作用?
String s = "0.1";
String[] sa = s.split(".");
System.out.println(sa[0] + "Hello " + sa[1]);
它给出的错误为:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.test.A.main(A.java:8)
为什么这段代码不起作用?
String s = "0.1";
String[] sa = s.split(".");
System.out.println(sa[0] + "Hello " + sa[1]);
它给出的错误为:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.test.A.main(A.java:8)
String.split不会将字符串拆分为另一个字符串,而是将其拆分为正则表达式。在.
正则表达式中具有特殊含义(它代表“任何字符”)。所以当你想明确匹配点时,你需要对它们进行转义。改为使用"\\."
。
试试这个 :
String[] sa = s.split("\\.");
采用
String[] sa = s.split("\\.");
点是一个特殊的.
正则表达式字符,除非您对其进行转义,否则它将匹配任何内容。
您的ArrayIndexOutOfBoundsException
发生是因为您超出了数组的范围。
你拥有它的方式sa.length
是 0,所以任何数组访问都会导致你的异常。
转义"."
- 它被视为特殊字符。您可能想阅读此内容。
String[] sa = s.split("\\.");