public static String formatIpv6(String ipv6) {
String ipmat = ipv6.replace("::", "&");
String ipv6No0 = "";
int index = ipmat.indexOf("&");
//判断是否有::
if (ipmat.contains("&")) {
//判断:的数量
int n = ipmat.length() - ipmat.replaceAll(":", "").length();
//如果出现:: 在第一个的位置 或者 最后的位置
if (index == 0 || index == ipmat.length() - 1) {
//需要补0的数量
int i = 8 - (n + 1);
StringBuilder str = new StringBuilder();
String bj = "";
//如果出现:: 在第一个的位置
if (index == 0) {
bj = "0:";
} else {//如果出现:: 在最后的位置
bj = ":0";
}
for (int j = 0; j < i; j++) {
str.append(bj);
}
ipv6No0 = ipmat.replace("&", str.toString());
} else {// 如果出现:: 中间位置
String[] split = ipmat.split("&");
//需要补0的数量
int i = 8 - (n + 2);
StringBuilder str = new StringBuilder();
for (int j = 0; j < i; j++) {
str.append(":0");
}
str.append(":");
ipv6No0 = split[0] + str.toString() + split[1];
}
}
String[] split = ipv6No0.split(":");
StringBuilder ipv6s = new StringBuilder();
//补0
for (int i = 0; i < split.length; i++) {
String s = split[i];
if (s.length() == 1) {
ipv6s.append("000" + s);
}
if (s.length() == 2) {
ipv6s.append("00" + s);
}
if (s.length() == 3) {
ipv6s.append("0" + s);
}
if (s.length() == 4) {
ipv6s.append(s);
}
if (i != split.length - 1) {
ipv6s.append(":");
}
}
return ipv6s.toString();
}