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] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BF=87=E6=BB=A4=E5=AD=97?= =?UTF-8?q?=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); + } }