This commit is contained in:
Looly 2023-07-18 00:18:01 +08:00
parent 2495825c74
commit 5ac017adad
2 changed files with 16 additions and 5 deletions

View File

@ -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();
}

View File

@ -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"));
}
}