[SCB-2361]modify transformIpPort logic (#2728)

diff --git a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
index 8851c95..e782e05 100644
--- a/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
+++ b/service-registry/registry-service-center/src/main/java/org/apache/servicecomb/serviceregistry/refresh/AddressManager.java
@@ -20,6 +20,7 @@
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.Socket;
+import java.net.URI;
 import java.util.List;
 
 import org.apache.commons.lang3.StringUtils;
@@ -36,7 +37,7 @@
 public class AddressManager extends AbstractAddressManager {
   private static final Logger LOGGER = LoggerFactory.getLogger(AddressManager.class);
 
-  private static final String URI_SPLIT = ":";
+  private static final String URI_PREFIX = "rest://";
 
   public AddressManager(List<String> addresses, EventBus eventBus) {
     super(addresses);
@@ -65,8 +66,8 @@
   }
 
   private IpPort transformIpPort(String address) {
-    String[] result = StringUtils.split(address, URI_SPLIT);
-    return new IpPort(result[0], Integer.valueOf(result[1]));
+    URI uri = URI.create(URI_PREFIX + address);
+    return new IpPort(uri.getHost(), uri.getPort());
   }
 
   @Subscribe
diff --git a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
index a81a56c..9263e1b 100644
--- a/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
+++ b/service-registry/registry-service-center/src/test/java/org/apache/servicecomb/serviceregistry/refresh/AddressManagerTest.java
@@ -23,6 +23,7 @@
 import java.util.List;
 import java.util.Map;
 
+import org.apache.servicecomb.foundation.common.event.EventManager;
 import org.apache.servicecomb.foundation.common.net.IpPort;
 import org.apache.servicecomb.http.client.event.RefreshEndpointEvent;
 import org.junit.Assert;
@@ -80,4 +81,23 @@
     List<String> availableRegion = Deencapsulation.getField(addressManager1, "availableRegion");
     Assert.assertEquals("127.0.0.4:30100", availableRegion.get(0));
   }
+
+  @Test
+  public void addressIPV6Test() {
+    List<String> addressAZ = new ArrayList<>();
+    addressAZ.add("rest://[2008::7:957f:b2d6:1af4:a1f8]:30100");
+    Map<String, List<String>> zoneAndRegion = new HashMap<>();
+    zoneAndRegion.put("sameZone", addressAZ);
+    zoneAndRegion.put("sameRegion", new ArrayList<>());
+    addressManager1 = new AddressManager(addresses, EventManager.getEventBus());
+    RefreshEndpointEvent event = new RefreshEndpointEvent(zoneAndRegion, "SERVICECENTER");
+    addressManager1.refreshEndpoint(event, "SERVICECENTER");
+
+    List<String> availableZone = Deencapsulation.getField(addressManager1, "availableZone");
+    Assert.assertEquals("[2008::7:957f:b2d6:1af4:a1f8]:30100", availableZone.get(0));
+
+    IpPort ipPort = addressManager1.getAvailableIpPort();
+    Assert.assertEquals("[2008::7:957f:b2d6:1af4:a1f8]", ipPort.getHostOrIp());
+    Assert.assertEquals(30100, ipPort.getPort());
+  }
 }
\ No newline at end of file