敏感信息(用户名,银行卡号,身份证号,手机号)用星号代替
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了敏感信息(用户名,银行卡号,身份证号,手机号)用星号代替相关的知识,希望对你有一定的参考价值。
项目中有一些地方需要做到保密的效果:
- 用户名一部分需要替换为*来达到保密效果;
- 银行卡号一部分需要替换为 *
- 身份证号一部分需要替换为 *
把这个工具类分享出来
1 package com.chinasun; 2 3 /** 4 * File Description : String的替换,以达到保密效果 5 * 6 *根据需求改写 以下正则都是数字,手机号代码没写和身份证号一样 7 */ 8 public class StringReplaceUtil { 9 /** 10 * 根据用户名的不同长度,来进行替换 ,达到保密效果 11 * 12 * @param userName 13 * 用户名 14 * @return 替换后的用户名 15 */ 16 public static String userNameReplaceWithStar(String userName) { 17 String userNameAfterReplaced = ""; 18 19 if (userName == null) { 20 userName = ""; 21 } 22 23 int nameLength = userName.length(); 24 System.out.println(nameLength); 25 26 if (nameLength <= 1) { 27 userNameAfterReplaced = "*"; 28 } else if (nameLength == 2) { 29 userNameAfterReplaced = replaceAction(userName, "(?<=\\w{0})\\w(?=\\w{1})"); 30 } else if (nameLength >= 3 && nameLength <= 6) { 31 userNameAfterReplaced = replaceAction(userName, "(?<=\\d{1})\\d(?=\\d{1})"); 32 } else if (nameLength == 7) { 33 userNameAfterReplaced = replaceAction(userName, "(?<=\\d{1})\\d(?=\\d{2})"); 34 } else if (nameLength == 8) { 35 userNameAfterReplaced = replaceAction(userName, "(?<=\\d{2})\\d(?=\\d{2})"); 36 } else if (nameLength == 9) { 37 userNameAfterReplaced = replaceAction(userName, "(?<=\\d{2})\\d(?=\\d{3})"); 38 } else if (nameLength == 10) { 39 userNameAfterReplaced = replaceAction(userName, "(?<=\\d{3})\\d(?=\\d{3})"); 40 } else if (nameLength >= 11) { 41 userNameAfterReplaced = replaceAction(userName, "(?<=\\d{3})\\d(?=\\d{4})"); 42 } 43 44 return userNameAfterReplaced; 45 46 } 47 48 /** 49 * 实际替换动作 50 * 51 * @param username 52 * username 53 * @param regular 54 * 正则 55 * @return 56 */ 57 private static String replaceAction(String username, String regular) { 58 return username.replaceAll(regular, "*"); 59 } 60 61 /** 62 * 身份证号替换,保留前四位和后四位 63 * 64 * 如果身份证号为空 或者 null ,返回null ;否则,返回替换后的字符串; 65 * 66 * @param idCard 67 * 身份证号 68 * @return 69 */ 70 public static String idCardReplaceWithStar(String idCard) { 71 72 if (idCard.isEmpty() || idCard == null) { 73 return null; 74 } else { 75 return replaceAction(idCard, "(?<=\\d{4})\\d(?=\\d{4})"); 76 } 77 } 78 79 /** 80 * 银行卡替换,保留后四位 81 * 82 * 如果银行卡号为空 或者 null ,返回null ;否则,返回替换后的字符串; 83 * 84 * @param bankCard 85 * 银行卡号 86 * @return 87 */ 88 public static String bankCardReplaceWithStar(String bankCard) { 89 90 if (bankCard.isEmpty() || bankCard == null) { 91 return null; 92 } else { 93 return replaceAction(bankCard, "(?<=\\d{0})\\d(?=\\d{4})"); 94 } 95 } 96 }
以上是关于敏感信息(用户名,银行卡号,身份证号,手机号)用星号代替的主要内容,如果未能解决你的问题,请参考以下文章