-2

为什么这段代码不起作用?

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)
4

5 回答 5

4

String.split不会将字符串拆分为另一个字符串,而是将其拆分为正则表达式。在.正则表达式中具有特殊含义(它代表“任何字符”)。所以当你想明确匹配点时,你需要对它们进行转义。改为使用"\\."

于 2012-12-18T13:00:45.720 回答
2

试试这个 :

 String[] sa = s.split("\\.");
于 2012-12-18T12:58:17.057 回答
2

采用

String[] sa = s.split("\\.");

点是一个特殊的.正则表达式字符,除非您对其进行转义,否则它将匹配任何内容。

您的ArrayIndexOutOfBoundsException发生是因为您超出了数组的范围。

你拥有它的方式sa.length是 0,所以任何数组访问都会导致你的异常。

于 2012-12-18T12:58:21.793 回答
1

split 是基于正则表达式的。看这里的第二段

简而言之。答案是逃避,如

split("\\.")
于 2012-12-18T12:59:54.027 回答
0

转义"."- 它被视为特殊字符。您可能想阅读内容。

String[] sa = s.split("\\.");
于 2012-12-18T12:59:11.720 回答