【Coding 隨想】處理一組字符串,逐個判斷是否為合法IPv4和IPv6地址[修改版]


面試問到相關問題,自己寫了個。

這個問題的關鍵在於正則表達式和模式匹配,按照規則逐步過濾,不多說,上個碼

 

 

import java.util.LinkedList;
import java.util.List;
import java.util.regex.Pattern;


public class Solution {
public List<String> sol(String[] args) {

List<String> results = new LinkedList<String>();

int count = args.length;
for(int k = 0;k < count;k++){
if(isIPv4(args[k]))
results.add("IPv4");
else if(isIPv6(args[k]))
results.add("IPv6");
else results.add("Neither");
}


return results;


}

public boolean isIPv4(String str){
if(!Pattern.matches("[0-9]*[.][0-9]*[.][0-9]*[.][0-9]*", str))
return false;
else {
String[] arrays = str.split("\\.");

if(Integer.parseInt(arrays[0]) < 256 && arrays[0].length() <= 3
&&Integer.parseInt(arrays[1]) < 256 && arrays[0].length() <= 3
&&Integer.parseInt(arrays[2]) < 256 && arrays[0].length() <= 3
&&Integer.parseInt(arrays[3]) < 256 && arrays[0].length() <= 3)

return true;

else return false;
}

}

public boolean isIPv6(String str){
if(!Pattern.matches("[0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][:][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][:][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][:][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][:][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][:][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][:][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][:][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F][0-9a-fA-F]", str))
return false;

return true;

}

}

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM