diff --git a/common/src/main/java/com/alibaba/nacos/common/utils/StringUtils.java b/common/src/main/java/com/alibaba/nacos/common/utils/StringUtils.java index 9e9bc01a2f6..15904fc5221 100644 --- a/common/src/main/java/com/alibaba/nacos/common/utils/StringUtils.java +++ b/common/src/main/java/com/alibaba/nacos/common/utils/StringUtils.java @@ -431,4 +431,25 @@ public static String deleteWhitespace(String str) { public static boolean equalsIgnoreCase(String str1, String str2) { return str1 == null ? str2 == null : str1.equalsIgnoreCase(str2); } + + /** + * Splits the provided text into an array with a maximum length, + * separators specified. + * If separatorChars is empty, divide by blank. + * @param str the String to parse, may be null + * @return an array of parsed Strings + */ + @SuppressWarnings("checkstyle:WhitespaceAround") + public static String[] split(final String str, String separatorChars) { + if (str == null) { + return null; + } + if (str.length() == 0) { + return new String[0]; + } + if (separatorChars == null){ + separatorChars = " +"; + } + return str.split(separatorChars); + } } diff --git a/common/src/test/java/com/alibaba/nacos/common/utils/StringUtilsTest.java b/common/src/test/java/com/alibaba/nacos/common/utils/StringUtilsTest.java index be8adba3d5c..3211ff273de 100644 --- a/common/src/test/java/com/alibaba/nacos/common/utils/StringUtilsTest.java +++ b/common/src/test/java/com/alibaba/nacos/common/utils/StringUtilsTest.java @@ -200,4 +200,13 @@ public void testEqualsIgnoreCase() { Assert.assertTrue(StringUtils.equalsIgnoreCase("abc", "abc")); Assert.assertTrue(StringUtils.equalsIgnoreCase("abc", "ABC")); } + + @Test + public void testSplit() { + Assert.assertNull(StringUtils.split(null, ",")); + Assert.assertArrayEquals(new String[0], StringUtils.split("", ",")); + Assert.assertArrayEquals(new String[]{"ab", "cd", "ef"}, StringUtils.split("ab cd ef", null)); + Assert.assertArrayEquals(new String[]{"ab", "cd", "ef"}, StringUtils.split("ab cd ef", null)); + Assert.assertArrayEquals(new String[]{"ab", "cd", "ef"}, StringUtils.split("ab:cd:ef", ":")); + } } diff --git a/naming/src/main/java/com/alibaba/nacos/naming/core/InstanceOperatorServiceImpl.java b/naming/src/main/java/com/alibaba/nacos/naming/core/InstanceOperatorServiceImpl.java index 2cc39659e00..1d416a20ff6 100644 --- a/naming/src/main/java/com/alibaba/nacos/naming/core/InstanceOperatorServiceImpl.java +++ b/naming/src/main/java/com/alibaba/nacos/naming/core/InstanceOperatorServiceImpl.java @@ -187,7 +187,7 @@ public ServiceInfo listInstance(String namespaceId, String serviceName, Subscrib checkIfDisabled(service); List srvedIps = service - .srvIPs(Arrays.asList(cluster.split(","))); + .srvIPs(Arrays.asList(StringUtils.split(cluster, StringUtils.COMMA))); // filter ips using selector: if (service.getSelector() != null && StringUtils.isNotBlank(clientIP)) {