From 31b1902d6bb6ae27fbb99d7c09d16a6a4b03f832 Mon Sep 17 00:00:00 2001 From: lixiaohua <1124205446@qq.com> Date: Sat, 1 Aug 2020 21:09:40 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=87=E6=BB=A4?= =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E7=9A=84=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/core/util/StrUtil.java | 41 ++++++++++++------- .../java/cn/hutool/core/util/StrUtilTest.java | 8 ++++ 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java index 6868939b0..c2a015285 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.function.Predicate; import java.util.regex.Pattern; /** @@ -1332,20 +1333,7 @@ public class StrUtil { * @return 清理后的字符串 */ public static String cleanBlank(CharSequence str) { - if (str == null) { - return null; - } - - int len = str.length(); - final StringBuilder sb = new StringBuilder(len); - char c; - for (int i = 0; i < len; i++) { - c = str.charAt(i); - if (false == CharUtil.isBlankChar(c)) { - sb.append(c); - } - } - return sb.toString(); + return filter(str, c -> !CharUtil.isBlankChar(c)); } // ------------------------------------------------------------------------------ Split @@ -4324,4 +4312,29 @@ public class StrUtil { } return new String(buffer); } + + /** + * 过滤字符串 + * + * @param str 字符串 + * @param predicate 过滤条件 + * @return 过滤后的字符串 + * @since 5.4.0 + */ + public static String filter(CharSequence str, Predicate predicate) { + if (str == null || predicate == null) { + return str(str); + } + + int len = str.length(); + final StringBuilder sb = new StringBuilder(len); + char c; + for (int i = 0; i < len; i++) { + c = str.charAt(i); + if (predicate.test(c)) { + sb.append(c); + } + } + return sb.toString(); + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java index 7c979d620..64acb6da6 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java @@ -456,4 +456,12 @@ public class StrUtilTest { String brief = StrUtil.brief(str, maxLength); Assert.assertEquals(brief.length(), maxLength); } + + @Test + public void filterTest() { + final String filterNumber = StrUtil.filter("hutool678", CharUtil::isNumber); + Assert.assertEquals(filterNumber, "678"); + String cleanBlank = StrUtil.filter(" 你 好 ", c -> !CharUtil.isBlankChar(c)); + Assert.assertEquals("你好", cleanBlank); + } } From e107996e0e31627d9896ecb3ddd5266d4a73e2f4 Mon Sep 17 00:00:00 2001 From: lixiaohua <1124205446@qq.com> Date: Sat, 1 Aug 2020 21:14:49 +0800 Subject: [PATCH 2/5] update --- hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java index 64acb6da6..eac87d08c 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/StrUtilTest.java @@ -460,7 +460,7 @@ public class StrUtilTest { @Test public void filterTest() { final String filterNumber = StrUtil.filter("hutool678", CharUtil::isNumber); - Assert.assertEquals(filterNumber, "678"); + Assert.assertEquals("678", filterNumber); String cleanBlank = StrUtil.filter(" 你 好 ", c -> !CharUtil.isBlankChar(c)); Assert.assertEquals("你好", cleanBlank); } From bd236d9d08509a80dee59082d10b84c786d07357 Mon Sep 17 00:00:00 2001 From: lixiaohua <1124205446@qq.com> Date: Sat, 1 Aug 2020 22:13:45 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E6=94=B9=E4=B8=BA=E7=94=A8hutool=E4=B8=AD?= =?UTF-8?q?=E7=9A=84=E8=BF=87=E6=BB=A4=E5=99=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/cn/hutool/core/util/StrUtil.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java index c2a015285..8c588dbbd 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java @@ -3,6 +3,7 @@ package cn.hutool.core.util; import cn.hutool.core.comparator.VersionComparator; import cn.hutool.core.convert.Convert; import cn.hutool.core.lang.Assert; +import cn.hutool.core.lang.Filter; import cn.hutool.core.lang.Matcher; import cn.hutool.core.lang.func.Func1; import cn.hutool.core.text.StrBuilder; @@ -4316,13 +4317,13 @@ public class StrUtil { /** * 过滤字符串 * - * @param str 字符串 - * @param predicate 过滤条件 + * @param str 字符串 + * @param filter 过滤器 * @return 过滤后的字符串 * @since 5.4.0 */ - public static String filter(CharSequence str, Predicate predicate) { - if (str == null || predicate == null) { + public static String filter(CharSequence str, Filter filter) { + if (str == null || filter == null) { return str(str); } @@ -4331,7 +4332,7 @@ public class StrUtil { char c; for (int i = 0; i < len; i++) { c = str.charAt(i); - if (predicate.test(c)) { + if (filter.accept(c)) { sb.append(c); } } From 482bc4e56effd62f13cdb0ec993fd5d0c06c7c1d Mon Sep 17 00:00:00 2001 From: lixiaohua <1124205446@qq.com> Date: Sat, 1 Aug 2020 22:14:56 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=88=A0=E9=99=A4=E5=A4=9A=E4=BD=99?= =?UTF-8?q?=E5=AF=BC=E5=85=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java | 1 - 1 file changed, 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java index 8c588dbbd..6e4542d53 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java @@ -23,7 +23,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.function.Predicate; import java.util.regex.Pattern; /** From e2b900ad82ca9282803438cfd0f380eae79efb05 Mon Sep 17 00:00:00 2001 From: lixiaohua <1124205446@qq.com> Date: Sat, 1 Aug 2020 22:19:40 +0800 Subject: [PATCH 5/5] update --- hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java index 6e4542d53..233667b33 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/StrUtil.java @@ -4321,7 +4321,7 @@ public class StrUtil { * @return 过滤后的字符串 * @since 5.4.0 */ - public static String filter(CharSequence str, Filter filter) { + public static String filter(CharSequence str, final Filter filter) { if (str == null || filter == null) { return str(str); }