1 import java.util.*; 2 3 public class Solution { 4 /** 5 * 验证IP地址 6 * @param IP string字符串 一个IP地址字符串 7 * @return string字符串 8 */ 9 public String solve (String IP) { 10 if (isIPv4(IP)) { 11 return "IPv4"; 12 } else if (isIPv6(IP)) { 13 return "IPv6"; 14 } 15 return "Neither"; 16 } 17 18 boolean isIPv4 (String ip) { 19 // 分割字符串 20 if (ip.indexOf('.') == -1) { 21 return false; 22 } 23 String[] itemArray = ip.split("\\."); 24 // 校验组数量 25 if (itemArray.length != 4) { 26 return false; 27 } 28 for (int i = 0; i < itemArray.length; i++) { 29 // 不能缺省 30 if (itemArray[i].length() < 0 || itemArray[i].length() == 0) { 31 return false; 32 } 33 // 不能大于255 34 if (itemArray[i].length() > 3) { 35 return false; 36 } 37 // 不能以0开头 38 if (itemArray[i].charAt(0) == '0' && itemArray[i].length() != 1) { 39 return false; 40 } 41 // 分割字符串每个字符必须为数字 42 for (int j = 0; j < itemArray[i].length(); j++) { 43 char word = itemArray[i].charAt(j); 44 if (word < '0' || word > '9') { 45 return false; 46 } 47 } 48 // 转化为数字需要在0-255之间 49 int num = 0; 50 for (int j = 0; j < itemArray[i].length(); j++) { 51 char word = itemArray[i].charAt(j); 52 num = num * 10 + (int)(word - '0'); 53 } 54 if (num < 0 || num > 255) { 55 return false; 56 } 57 } 58 return true; 59 } 60 61 boolean isIPv6 (String ip) { 62 // 分割字符串 63 if (ip.indexOf(':') == -1) { 64 return false; 65 } 66 String[] itemArray = ip.split(":"); 67 // 校验组数量 68 if (itemArray.length != 8) { 69 return false; 70 } 71 // 不能以冒号开始或结尾 72 if (ip.startsWith(":") || ip.endsWith(":")) { 73 return false; 74 } 75 for (int i = 0; i < itemArray.length; i++) { 76 // 每组字符串不能缺省 77 if (itemArray[i].length() == 0) { 78 return false; 79 } 80 // 每组字符串不能超过4位 81 if (itemArray[i].length() > 4) { 82 return false; 83 } 84 // 每组字符串不能只有0 85 int zeroCount = 0; 86 for (int j = 0; j < itemArray[i].length(); j++) { 87 char word = itemArray[i].charAt(j); 88 if (word == '0') { 89 zeroCount ++; 90 } 91 } 92 if (itemArray[i].charAt(0) == 0 && 93 itemArray[i].length() > 1 && 94 zeroCount == itemArray[i].length()) { 95 return false; 96 } 97 // 不能出现[0-9][a-f][A-F]以外的字符 98 for (int j = 0; j < itemArray[i].length(); j++) { 99 char word = itemArray[i].charAt(j); 100 boolean flag = (word >= '0' && word <= '9') || 101 (word >= 'a' && word <= 'f') || 102 (word >= 'A' && word <= 'F') ; 103 if (flag == false) { 104 return false; 105 } 106 } 107 } 108 return true; 109 } 110 }
标签:03,return,int,word,itemArray,length,IP地址,字符串,false From: https://www.cnblogs.com/StringBuilder/p/17854970.html