为什么这段代码不起作用?
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)
答案 0 :(得分:4)
String.split不会将字符串拆分为另一个字符串,而是将其拆分为regular expression。 .
在正则表达式中具有特殊含义(它代表“任何字符”)。因此,当你想明确匹配点时,你需要逃避它们。请改用"\\."
。
答案 1 :(得分:2)
试试这个:
String[] sa = s.split("\\.");
答案 2 :(得分:2)
使用
String[] sa = s.split("\\.");
.
点是一个特殊的正则表达式字符,除非你将其转义,否则它将匹配任何内容。
您的ArrayIndexOutOfBoundsException
因超出阵列范围而发生。
你拥有它sa.length
的方式是0,所以任何数组访问都会导致你的异常。
答案 3 :(得分:1)
答案 4 :(得分:0)
转义"."
- 它被视为特殊字符。您可能需要阅读this。
String[] sa = s.split("\\.");