From f0707cee77a6a53bbc23ecaf1d9b3fafccee9261 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Tue, 28 Jun 2022 17:02:51 +0800 Subject: [PATCH 1/3] add isAllBlank(final Collection strs) --- .../java/cn/hutool/core/text/StrUtil.java | 21 +++++++++ .../java/cn/hutool/core/text/StrUtilTest.java | 45 +++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java diff --git a/hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java index b3e63f3da..2b520bceb 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java @@ -7,6 +7,9 @@ import java.io.StringReader; import java.io.StringWriter; import java.nio.ByteBuffer; import java.nio.charset.Charset; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; import java.util.Map; /** @@ -415,4 +418,22 @@ public class StrUtil extends CharSequenceUtil implements StrPool { public static String format(final CharSequence template, final Map map, final boolean ignoreNull) { return StrFormatter.format(template, map, ignoreNull); } + + /** + * @see CharSequenceUtil#isAllBlank(CharSequence...) + * @param strs 字符串列表 + * @return 批量判断字符串是否全部为空白 + * @since 6.0.1 + */ + public static boolean isAllBlank(final Collection strs) { + if (ArrayUtil.isEmpty(strs)) { + return true; + } + for (final CharSequence str : strs) { + if (isNotBlank(str)) { + return false; + } + } + return true; + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java new file mode 100644 index 000000000..20b23d523 --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java @@ -0,0 +1,45 @@ +package cn.hutool.core.text; + +import org.junit.Assert; +import org.junit.Test; + +import java.util.LinkedList; +import java.util.List; + +public class StrUtilTest { + @Test + public void testIssAllBlank() { + List queue = new LinkedList<>(); + queue.add("apple"); + queue.add("banana"); + queue.add("cherry"); + queue.add("orange"); + queue.add("strawberry"); + queue.add("watermelon"); + Assert.assertFalse(StrUtil.isAllBlank(queue)); + + Assert.assertTrue(CharSequenceUtil.isAllBlank("")); + Assert.assertTrue(CharSequenceUtil.isAllBlank(" ")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\t")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\n")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\r")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\f")); + Assert.assertFalse(CharSequenceUtil.isAllBlank("\b")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u00A0")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\uFEFF")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2000")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2001")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2002")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2003")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2004")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2005")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2006")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2007")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2008")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2009")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u200A")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u3000")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\uFEFF")); + + } +} From e4737f0a5d59223a20c4e57c3fb1fa9201f45e4e Mon Sep 17 00:00:00 2001 From: duandazhi Date: Tue, 28 Jun 2022 17:29:14 +0800 Subject: [PATCH 2/3] add more StrUtilTest --- .../java/cn/hutool/core/text/StrUtilTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java index 20b23d523..c3b8f1e6e 100644 --- a/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java @@ -7,6 +7,44 @@ import java.util.LinkedList; import java.util.List; public class StrUtilTest { + @Test + public void testReplace2() { + // https://gitee.com/dromara/hutool/issues/I4M16G + final String replace = "#{A}"; + final String result = StrUtil.replace(replace, "#{AAAAAAA}", "1"); + Assert.assertEquals(replace, result); + } + + @Test + public void testReplaceByStr() { + final String replace = "SSM15930297701BeryAllen"; + final String result = StrUtil.replace(replace, 5, 12, "***"); + Assert.assertEquals("SSM15***01BeryAllen", result); + } + + @Test + public void testAddPrefixIfNot() { + final String str = "hutool"; + String result = StrUtil.addPrefixIfNot(str, "hu"); + Assert.assertEquals(str, result); + + result = StrUtil.addPrefixIfNot(str, "Good"); + Assert.assertEquals("Good" + str, result); + } + + @Test + public void testAddSuffixIfNot() { + final String str = "hutool"; + String result = StrUtil.addSuffixIfNot(str, "tool"); + Assert.assertEquals(str, result); + + result = StrUtil.addSuffixIfNot(str, " is Good"); + Assert.assertEquals(str + " is Good", result); + + result = StrUtil.addSuffixIfNot("", "/"); + Assert.assertEquals("/", result); + } + @Test public void testIssAllBlank() { List queue = new LinkedList<>(); @@ -41,5 +79,13 @@ public class StrUtilTest { Assert.assertTrue(CharSequenceUtil.isAllBlank("\u3000")); Assert.assertTrue(CharSequenceUtil.isAllBlank("\uFEFF")); + // 其他空白字符 + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u000B")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u000C")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u00A0")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u1680")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u180E")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2000")); + Assert.assertTrue(CharSequenceUtil.isAllBlank("\u2001")); } } From 2cb7d774c9fa1e89ce06d6a8b1e9bee15fe8d232 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Tue, 28 Jun 2022 19:05:55 +0800 Subject: [PATCH 3/3] =?UTF-8?q?isAllBlank=20=E4=BF=AE=E6=94=B9=EF=BC=9A=20?= =?UTF-8?q?Collection<=3F=20extends=20CharSequence>?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java index 2b520bceb..a86ff17b0 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/StrUtil.java @@ -8,8 +8,6 @@ import java.io.StringWriter; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.util.Collection; -import java.util.Iterator; -import java.util.List; import java.util.Map; /** @@ -425,7 +423,7 @@ public class StrUtil extends CharSequenceUtil implements StrPool { * @return 批量判断字符串是否全部为空白 * @since 6.0.1 */ - public static boolean isAllBlank(final Collection strs) { + public static boolean isAllBlank(final Collection strs) { if (ArrayUtil.isEmpty(strs)) { return true; }