From 8585ecc1eb983635ff07f3f37b17f1f4a4664859 Mon Sep 17 00:00:00 2001 From: Looly Date: Wed, 2 Aug 2023 11:27:04 +0800 Subject: [PATCH] =?UTF-8?q?MaskingUtil=E5=A2=9E=E5=8A=A0=E6=B8=85=E7=A9=BA?= =?UTF-8?q?=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/hutool/core/data/MaskingUtil.java | 40 +++++++++++++++++-- .../hutool/core/data/MaskingUtilTest.java | 5 ++- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/data/MaskingUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/data/MaskingUtil.java index ba26e6b8c..6c2e212b7 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/data/MaskingUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/data/MaskingUtil.java @@ -96,7 +96,15 @@ public class MaskingUtil { /** * 定义了一个first_mask的规则,只显示第一个字符。 */ - FIRST_MASK + FIRST_MASK, + /** + * 清空为null + */ + CLEAR_TO_NULL, + /** + * 清空为"" + */ + CLEAR_TO_EMPTY } /** @@ -115,7 +123,7 @@ public class MaskingUtil { * MaskingUtil.masking("192.168.1.1", MaskingUtil.DesensitizedType.IPV4)) = "192.*.*.*" * * - * @param str 字符串 + * @param str 字符串 * @param maskingType 脱敏类型;可以脱敏:用户id、中文名、身份证号、座机号、手机号、地址、电子邮件、密码 * @return 脱敏之后的字符串 * @author dazer and neusoft and qiaomu @@ -166,11 +174,37 @@ public class MaskingUtil { case FIRST_MASK: newStr = firstMask(String.valueOf(str)); break; + case CLEAR_TO_EMPTY: + newStr = clear(); + break; + case CLEAR_TO_NULL: + newStr = clearToNull(); + break; default: } return newStr; } + /** + * 清空为空字符串 + * + * @return 清空后的值 + * @since 5.8.22 + */ + public static String clear() { + return StrUtil.EMPTY; + } + + /** + * 清空为{@code null} + * + * @return 清空后的值(null) + * @since 5.8.22 + */ + public static String clearToNull() { + return null; + } + /** * 【用户id】不对外提供userId * @@ -342,7 +376,7 @@ public class MaskingUtil { } final int length = bankCardNo.length(); - final int endLength= length % 4 == 0 ? 4 : length % 4; + final int endLength = length % 4 == 0 ? 4 : length % 4; final int midLength = length - 4 - endLength; final StringBuilder buf = new StringBuilder(); diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/data/MaskingUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/data/MaskingUtilTest.java index f2d593ce9..07551e3b5 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/data/MaskingUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/data/MaskingUtilTest.java @@ -25,6 +25,9 @@ public class MaskingUtilTest { @Test public void maskingTest() { + Assertions.assertEquals("", MaskingUtil.masking("100", MaskingUtil.MaskingType.CLEAR_TO_EMPTY)); + Assertions.assertNull(MaskingUtil.masking("100", MaskingUtil.MaskingType.CLEAR_TO_NULL)); + Assertions.assertEquals("0", MaskingUtil.masking("100", MaskingUtil.MaskingType.USER_ID)); Assertions.assertEquals("段**", MaskingUtil.masking("段正淳", MaskingUtil.MaskingType.CHINESE_NAME)); Assertions.assertEquals("5***************1X", MaskingUtil.masking("51343620000320711X", MaskingUtil.MaskingType.ID_CARD)); @@ -103,7 +106,7 @@ public class MaskingUtilTest { } @Test - public void bankCardTest(){ + public void bankCardTest() { Assertions.assertNull(MaskingUtil.bankCard(null)); Assertions.assertEquals("", MaskingUtil.bankCard("")); Assertions.assertEquals("1234 **** **** **** **** 9", MaskingUtil.bankCard("1234 2222 3333 4444 6789 9"));