From 65a43f531835569afd88f8c87ae438d10fb7f639 Mon Sep 17 00:00:00 2001 From: duandazhi Date: Sun, 21 Mar 2021 23:08:12 +0800 Subject: [PATCH] =?UTF-8?q?add:=E8=84=B1=E6=95=8F=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=BD=A6=E7=89=8C=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/hutool/core/text/CharSequenceUtil.java | 1 + .../cn/hutool/core/util/DesensitizedUtil.java | 34 +++++++++++++++++-- .../core/util/DesensitizedUtilTest.java | 9 +++++ 3 files changed, 42 insertions(+), 2 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java index 780a06d1f..aafd5fc34 100644 --- a/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/text/CharSequenceUtil.java @@ -3647,6 +3647,7 @@ public class CharSequenceUtil { * StrUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtils.DesensitizedType.ADDRESS)) = "北京市海淀区马********" * StrUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtils.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn" * StrUtil.desensitized("1234567890", DesensitizedUtils.DesensitizedType.PASSWORD)) = "**********" + * StrUtil.desensitized("苏D40000", DesensitizedUtils.DesensitizedType.CAR_LICENSE)) = "苏D4***0" * * * @param str 字符串 diff --git a/hutool-core/src/main/java/cn/hutool/core/util/DesensitizedUtil.java b/hutool-core/src/main/java/cn/hutool/core/util/DesensitizedUtil.java index b19b7a941..9035aaebd 100644 --- a/hutool-core/src/main/java/cn/hutool/core/util/DesensitizedUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/util/DesensitizedUtil.java @@ -40,7 +40,9 @@ public class DesensitizedUtil { //电子邮件 EMAIL, //密码 - PASSWORD + PASSWORD, + //中国大陆车牌,包含普通车辆、新能源车辆 + CAR_LICENSE } /** @@ -54,7 +56,7 @@ public class DesensitizedUtil { * DesensitizedUtil.desensitized("北京市海淀区马连洼街道289号", DesensitizedUtils.DesensitizedType.ADDRESS)) = "北京市海淀区马********" * DesensitizedUtil.desensitized("duandazhi-jack@gmail.com.cn", DesensitizedUtils.DesensitizedType.EMAIL)) = "d*************@gmail.com.cn" * DesensitizedUtil.desensitized("1234567890", DesensitizedUtils.DesensitizedType.PASSWORD)) = "**********" - * + * DesensitizedUtil.desensitized("苏D40000", DesensitizedUtils.DesensitizedType.CAR_LICENSE)) = "苏D4***0" * * @author dazer and neusoft and qiaomu * @param str 字符串 @@ -92,6 +94,9 @@ public class DesensitizedUtil { case PASSWORD: newStr = DesensitizedUtil.password(String.valueOf(str)); break; + case CAR_LICENSE: + newStr = DesensitizedUtil.carLicense(String.valueOf(str)); + break; default: } return newStr; @@ -214,4 +219,29 @@ public class DesensitizedUtil { } return StrUtil.repeat('*', password.length()); } + + /** + * 【中国车牌】车牌中间用*代替 + * eg1:null => "" + * eg1:"" => "" + * eg3:苏D40000 => 苏D4***0 + * eg4:陕A12345D => 陕A1****D + * eg5:京A123 => 京A123 如果是错误的车牌,不处理 + * + * @param carLicense 完整的车牌号 + * @return 脱敏后的车牌 + */ + public static String carLicense(String carLicense) { + if (StrUtil.isBlank(carLicense)) { + return StrUtil.EMPTY; + } + // 普通车牌 + if (carLicense.length() == 7) { + carLicense = StrUtil.hide(carLicense, 3, 6); + } else if (carLicense.length() == 8) { + // 新能源车牌 + carLicense = StrUtil.hide(carLicense, 3, 7); + } + return carLicense; + } } diff --git a/hutool-core/src/test/java/cn/hutool/core/util/DesensitizedUtilTest.java b/hutool-core/src/test/java/cn/hutool/core/util/DesensitizedUtilTest.java index ea2754336..373fb3577 100644 --- a/hutool-core/src/test/java/cn/hutool/core/util/DesensitizedUtilTest.java +++ b/hutool-core/src/test/java/cn/hutool/core/util/DesensitizedUtilTest.java @@ -76,4 +76,13 @@ public class DesensitizedUtilTest { public void passwordTest() { Assert.assertEquals("**********", DesensitizedUtil.password("1234567890")); } + + @Test + public void carLicenseTest() { + Assert.assertEquals("", DesensitizedUtil.carLicense(null)); + Assert.assertEquals("", DesensitizedUtil.carLicense("")); + Assert.assertEquals("苏D4***0", DesensitizedUtil.carLicense("苏D40000")); + Assert.assertEquals("陕A1****D", DesensitizedUtil.carLicense("陕A12345D")); + Assert.assertEquals("京A123", DesensitizedUtil.carLicense("京A123")); + } }