String.split 在使用点时返回 null
2022-09-01 16:22:58
我得到了这个简单的代码:
String ip = "1.2.3.4";
String[] ipArray = ip.split(".");
System.out.println(ipArray[1]);
并且在它命中时为空(抛出空指针异常)。ipArraySystem.out.println
我的问题是,为什么ipArray保持空,即使我将其设置为在每个ip的.s上拆分?
我得到了这个简单的代码:
String ip = "1.2.3.4";
String[] ipArray = ip.split(".");
System.out.println(ipArray[1]);
并且在它命中时为空(抛出空指针异常)。ipArraySystem.out.println
我的问题是,为什么ipArray保持空,即使我将其设置为在每个ip的.s上拆分?
使用,您的问题将得到解决。问题是 String#split 接收正则表达式,点 (.) 符号是正则表达式中的特殊字符,因此您需要对其进行转义才能将其解释为普通点,并且由于反斜杠是 Java 中的转义字符,因此您也必须对其进行转义。ip.split("\\.");
.是正则表达式中的特殊字符,用于拆分字符串。
要解决此问题,您需要逃离 .这就引出了我们不幸的是,也是java字符串中的一个特殊字符,所以也必须转义,才能使.\.\\\.
我们的“最终”结果是ip.split("\\.");
在相关问题中,整个过程可以完全避免。做一些标准库已经为我们做过的事情是没有意义的。
请考虑以下事项
byte[] ipOctets = InetAddress.getByName(ip).getAddress();
这里唯一的问题是要记住,如果你想要int值,你必须用like提取它&int octet = ipOctets[0] & 0xFF;