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..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 @@ -7,6 +7,7 @@ import java.io.StringReader; import java.io.StringWriter; import java.nio.ByteBuffer; import java.nio.charset.Charset; +import java.util.Collection; import java.util.Map; /** @@ -415,4 +416,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..c3b8f1e6e --- /dev/null +++ b/hutool-core/src/test/java/cn/hutool/core/text/StrUtilTest.java @@ -0,0 +1,91 @@ +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 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<>(); + 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")); + + // 其他空白字符 + 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")); + } +}