为什么这个String.split()会拆分我的字符串?

时间:2012-12-18 12:56:39

标签: java

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

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)

5 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

试试这个:

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

答案 2 :(得分:2)

使用

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

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

您的ArrayIndexOutOfBoundsException因超出阵列范围而发生。

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

答案 3 :(得分:1)

split是基于正则表达式的。见第二段here

简而言之。答案正在逃避,如

split("\\.")

答案 4 :(得分:0)

转义"." - 它被视为特殊字符。您可能需要阅读this

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