ipv4、ipv6格式校验代码
一、题目
IPv4 地址格式:
IPv4地址由4组十进制数组成,每组范围为 0 - 255,用“.”分割。
注意:IPv4 地址内的数不能以 0 开头。
例:127.23.01.16 不合法,01以0开头
IPv6 地址格式:
IPv6由8组16进制的数字组成,每组由数字和字符组成,表示16位数。用 “:”分割。
注意:
不区分大小写;
数字可以以0 开头,但多余的 0 不被允许;
例:1027:00000:1901:234d:a908:2313:4432:0232不合法,出现00000超出4位。
不能因为某个组的值为 0,而使用一个空的组,以至于出现 ( :: ) 的情况;
例:1027::1901:234d:a908:2313:4432:232不合法,出现::。
输入格式:
键盘输入一个字符串
输出格式:
若字符串符合ipv4格式,则输出"ipv4";
若字符串符合ipv6格式,则输出"ipv6";
都不满足,则输出"Neither";
二、解答
规则分析:
ipv4校验逻辑:
- ipv4分割后数组大小==4 ;
- 每位数字长度[1,3];
- 不能以多余的0开头;
- 每位判断是否是数字;
ipv6校验逻辑:
- ipv6分割后数组大小==8 ;
- 每位长度[0,4];
- 每位是否为数字、或小写字符a-f、或大写字符A-F
代码实现:
【方式一】上述思路实现:
public class _ipv4_ipv6 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String IP = sc.nextLine();
System.out.println(new _ipv4_ipv6().judgeIp(IP));
}
public String judgeIp(String IP) {
if (IP.contains(".")) {
String[] ipv4 = IP.split(