算法題:判斷字符串是否是合法的ipv4地址

問題描述
判斷字符串是否是合法的ipv4地址

ipv4地址特點
比如 123.1.33.2
有四位,每一位之間直接用.分割,每一位的範圍是0-255,即在0.0.0.0到255.255.255.255之間

(方法1)
將當前字符串分割爲字符數組(注意分隔符.需要轉義寫成\\.),然後判斷每一位的範圍是否在0-255之間,如果在0-255之間,判斷是否當前字符是否以0結尾同時不是第一位(比如01.11.11.11不是合法的ipv4地址)

boolean checkIp(String ip) throws Exception{

		String arrs[]=ip.split("\\.");//.轉義
		if (arrs.length!=4) {

			return false;
		}
		for(int i=0;i<arrs.length;i++) {
			Integer num=null;
			try {
				num=Integer.parseInt(arrs[i]);
				if (num<0||num>255) {
					return false;
				}
				if (!num.equals("0")&&arrs[i].startsWith("0")) {//避免01出現
					return false;
				}
				
			} catch (NumberFormatException e) {
				// TODO: handle exception
				return false;
			}
		}
		return true;
		
	}

(方法2)使用正則表達式

boolean checkIp2(String ip) throws Exception{

		String arrs[]=ip.split("\\.");//.轉義
		if (arrs.length!=4) {

			return false;
		}
		String reg="\\d||[1,9]\\d{1,2}";
		for(String arr:arrs) {
			try {
				if (!arr.matches(reg)||Integer.parseInt(arr)>255) {
					return false;	
				}
			} catch (NumberFormatException e) {
				// TODO: handle exception
			}
		}
		return true;
		
	}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章