我想检查字符串是IPv4还是IPv6地址,但是没有其他地址。有没有办法用标准的java库来实现这个目的?
我知道:
我知道我可以使用正则表达式,但我更喜欢使用现有方法。
答案 0 :(得分:3)
您可以使用此库中的InetAddresses.forString():
答案 1 :(得分:1)
在C中执行此操作的方法是使用inet_pton()。您可以将代码移植到Java。 (或者使用一些非常复杂的正则表达式,因为匹配IPv6地址并不简单。)
您可以查看this question中的正则表达式并更改它,使其与主机名不匹配,如果您感觉很勇敢的话。 ; - )
答案 2 :(得分:0)
The IPAddress Java library以多态方式支持IPv4和IPv6。它有方法来做你正在描述的事情。
这是解决您问题的sample code。
以下是更多示例代码:
IPAddressString ipString = new IPAddressString("ipv4 or ipv6 address string goes here");
System.out.println("IPv4: " + ipString.isIpV4() + " IPv6: " + ipString.isIpV6());
答案 3 :(得分:-1)
简单的经验法则是,如果地址是x.x.x.x.x.x.x.x,那么它是一个IPV6地址......尝试查看类Inet4Address和Inet6Address。