ipv4、ipv6格式校验代码
生活随笔
收集整理的這篇文章主要介紹了
ipv4、ipv6格式校验代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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
代碼實現:
【方式一】上述思路實現:
【方式一】直接調用內置工具類IPAddressUtil
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().judgeIp2(IP));}/*** 實現ipv4和ipv6判斷的第二種方法:借助內置工具類IPAddressUtil* 注意:IPAddressUtil在判斷ipv6的時候,允許::,即全0的時候允許不寫0,因此這里需要做下處理* @param IP* @return*/public String judgeIp2(String IP) {if (IPAddressUtil.isIPv4LiteralAddress(IP)) return "ipv4";else if (IPAddressUtil.isIPv6LiteralAddress(IP)) { // 過濾::的情況,返回NeitherString[] ipv6 = IP.split(":");for (int i = 0; i < ipv6.length; i++) {if (ipv6[i] == null || ipv6[i].equals("") || ipv6[i].length() == 0) return "Neither";}return "ipv6";}return "Neither";} }總結
以上是生活随笔為你收集整理的ipv4、ipv6格式校验代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DJI新版模拟器遥控器连接不上问题解决之
- 下一篇: FCPX插件 图标和徽标动画 CineF