【发布时间】:2012-07-12 12:31:51
【问题描述】:
我得到了这个简单的代码:
String ip = "1.2.3.4";
String[] ipArray = ip.split(".");
System.out.println(ipArray[1]);
而ipArray 在遇到System.out.println 时为空(抛出空指针异常)。
我的问题是为什么 ipArray 保持为空,即使我将它设置为在每个 ip 的 .s 上拆分?
【问题讨论】:
-
您正在拆分任何字符,因此所有字符都将被拆分,因为数组中没有任何内容。 string.split 采用正则表达式。
-
点
.表示“任何字符” :) 你需要一个“真正的点”[.] -
确切地说,取决于模式 (DOTALL),
.将匹配或不匹配换行符。 -
我可以补充一下,如果您使用的是 python,那么您几乎 100% 正确。 python split 命令按字符(或正则表达式,但默认为字符)进行拆分
-
只是一个微小的更正 - 此代码将抛出 java.lang.IndexOutOfBoundsException 异常,而不是 NPE(如 OP 所写)。 String#split 永远不会返回 null。这里的问题是结果是一个空数组。
标签: java arrays string nullpointerexception