import java.util.regex.Pattern;
public class IPv6 {
public static void main(String[] args) {
System.out.println(shortenIPv6("0000:0000:006f:00ff::ff:ff"));
System.out.println("***********************************************************");
System.out.println(ipv6Fillup("66::ff:ae:d6b:ff"));}
/**
* IPv6 地址补全
* @param address : 此地址必须保证是合法的 IPv6 地址格式
* @return
*/
public static String ipv6Fillup(String address) {
address = address.trim();
// 获取 : 的数量
String temp = address;
int count = temp.length() - temp.replace(":", "").length();
boolean hasTwoColon = address.contains("::");
// 非 7 个 :,且不包含 :: 的情况
if(count < 7 && !hasTwoColon) {
return "Invalid IP address.";
}
// 含有 7 个 : 的情况
if(count == 7 && !hasTwoColon) {
String s = "";
String[] segments = address.split(":");
int length = segments.length;
// 用0补全 (前导0被省略的情况)
for(int i = 0; i < length; i++) {
segments[i] = "0000" + segments[i];
segments[i] = segments[i].substring(segments[i].length() - 4);
if(i == 0) {
s += segments[i];
} else {
s += ":" + segments[i];
}
}
return s;
}
String[] addresses = address.split("::");
int length = addresses.length;
// 全 0 的情况
if(length == 0) {
return "0000:0000:0000:0000:0000:0000:0000:0000";
}
// 超过 2个 :: 的情况
if(length > 2) {
return "Invalid IP address.";