From 5ac017adadd86470566b724357e02ffcd838a64e Mon Sep 17 00:00:00 2001 From: Looly Date: Tue, 18 Jul 2023 00:18:01 +0800 Subject: [PATCH] fix bug --- .../org/dromara/hutool/core/data/MaskingUtil.java | 7 ++++--- .../dromara/hutool/core/data/MaskingUtilTest.java | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 5 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 1a4d430e8..ba26e6b8c 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 @@ -336,13 +336,14 @@ public class MaskingUtil { if (StrUtil.isBlank(bankCardNo)) { return bankCardNo; } - bankCardNo = StrUtil.trim(bankCardNo); + bankCardNo = StrUtil.cleanBlank(bankCardNo); if (bankCardNo.length() < 9) { return bankCardNo; } final int length = bankCardNo.length(); - final int midLength = length - 8; + final int endLength= length % 4 == 0 ? 4 : length % 4; + final int midLength = length - 4 - endLength; final StringBuilder buf = new StringBuilder(); buf.append(bankCardNo, 0, 4); @@ -352,7 +353,7 @@ public class MaskingUtil { } buf.append('*'); } - buf.append(CharUtil.SPACE).append(bankCardNo, length - 4, length); + buf.append(CharUtil.SPACE).append(bankCardNo, length - endLength, length); return buf.toString(); } 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 8d3636a96..53eb17232 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 @@ -12,7 +12,6 @@ package org.dromara.hutool.core.data; -import org.dromara.hutool.core.data.MaskingUtil; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -25,7 +24,7 @@ import org.junit.jupiter.api.Test; public class MaskingUtilTest { @Test - public void desensitizedTest() { + public void maskingTest() { 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)); @@ -102,4 +101,15 @@ public class MaskingUtilTest { Assertions.assertEquals("陕A1****D", MaskingUtil.carLicense("陕A12345D")); Assertions.assertEquals("京A123", MaskingUtil.carLicense("京A123")); } + + @Test + public void bankCardTest(){ + Assertions.assertNull(MaskingUtil.bankCard(null)); + Assertions.assertEquals("", MaskingUtil.bankCard("")); + Assertions.assertEquals("1234 **** **** **** **** 9", MaskingUtil.bankCard("1234 2222 3333 4444 6789 9")); + Assertions.assertEquals("1234 **** **** **** **** 91", MaskingUtil.bankCard("1234 2222 3333 4444 6789 91")); + Assertions.assertEquals("1234 **** **** **** 6789", MaskingUtil.bankCard("1234 2222 3333 4444 6789")); + Assertions.assertEquals("1234 **** **** **** 678", MaskingUtil.bankCard("1234 2222 3333 4444 678")); + + } }