Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么这个String.split()会分割我的字符串?_Java - Fatal编程技术网

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

Java 为什么这个String.split()会分割我的字符串?,java,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) 试试这个: String[] sa = s.split("

为什么这个代码不起作用

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[] sa = s.split("\\.");
使用

点是一个特殊的正则表达式字符,除非您转义它,否则它将匹配任何字符

发生
ArrayIndexOutOfBoundsException
是因为超出了数组的边界

您使用它的方式
sa.length
将为0,因此任何数组访问都会导致异常。

escape
-它被视为特殊字符。你可能想读书


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

简而言之。答案是逃跑,就像在

split("\\.")

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

试试
“\\.”
而不是“.”这意味着任何字符。@Peter Lawrey我想删除我的问题:(:(:)你们这么严格为什么投票被否决?如果你们不知道
字符串。split
将正则表达式作为参数,并(不经意但合理地)假设需要一个字符串来精确匹配,那么从这里观察到的错误到正确的原因就没有明显的飞跃。我不认为这个问题是愚蠢的。@Thinker.。你应该集中精力学习新东西,而不是担心落选。不要因此而气馁。事实上,我也认为在这个问题上落选ion是不公平的,但它不应该成为任何删除问题的标准。此外,我们希望海报在发布问题之前做一些研究,这样我们就知道您正在做出一些努力。@MarkAmery也希望人们在提问之前阅读Javadoc作为最低先决条件(“问题表明研究努力”)。
String[] sa = s.split("\\.");
split("\\.")