public class IPUtil {
private static String simplifyIPv6Address(String ip) throws UnknownHostException {
InetAddress inetAddress = InetAddress.getByName(ip);
String fullIP = inetAddress.getHostAddress();
String[] parts = fullIP.split(":");
int maxZeroCount = 0;
int maxZeroIndex = -1;
int currentZeroCount = 0;
int currentZeroIndex = -1;
for (int i = 0; i < parts.length; i++) {
if (parts[i].equals("0")) {
currentZeroCount++;
if (currentZeroIndex == -1) currentZeroIndex = i;
} else {
if (currentZeroCount > maxZeroCount) {
maxZeroCount = currentZeroCount;
maxZeroIndex = currentZeroIndex;
}
currentZeroCount = 0;
currentZeroIndex = -1;
}
}
if (currentZeroCount > maxZeroCount) {
maxZeroCount = currentZeroCount;
maxZeroIndex = currentZeroIndex;
}
if (maxZeroIndex != -1 && maxZeroCount > 1) {
String zeroReplacement = (maxZeroIndex == 0 || maxZeroIndex + maxZeroCount == parts.length) ? "::" : ":";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < parts.length; i++) {
if (i == maxZeroIndex) {
sb.append(zeroReplacement);
i += maxZeroCount - 1;
} else {
sb.append(parts[i]);
if (i < parts.length - 1) sb.append(":");
}
}
return sb.toString();
}
return fullIP;
}
}