JAVA从控制台输入身份证号码,把生日用星号代替再打印出来
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA从控制台输入身份证号码,把生日用星号代替再打印出来相关的知识,希望对你有一定的参考价值。
public static void main(String[] args)
System.out.println("请输入你的18位身份证号码");
Scanner sc = new Scanner(System.in);
String ID = sc.nextLine();
while(ID.length()!=18)
System.out.println("你的输入有误,身份证号码必须是18位!");
ID = sc.nextLine();
这里怎么写??
System.out.println("身份证号码为:"+ID);
比如ID=370304198411061433
370304:代表的是地区编号
19841106:出生日期
1433:个人区分号
生日 str = ID.substring(9,13); 这样截取后的子字符串str就是1106。
最后再将截取后的字符串替换成星号。str="****";
最后输出就是:ID.substring(1,9)+str+ID.substring(9,17)
当然 这样比较麻烦 可以试试stringBuff类。 参考技术A 插入这句:
ID = new StringBuffer().append(ID.substring(0,6)).append("********")
.append(ID.substring(14)).toString(); 参考技术B ID = ID.substring(0, 6)+"********"+ID.substring(14);
//身份ID固定可以这样 参考技术C 我感觉,应该将ID转换为一个字符串数组,用if语句,当是生日时就输出* 否则输出本身
敏感信息(用户名,银行卡号,身份证号,手机号)用星号代替
项目中有一些地方需要做到保密的效果:
- 用户名一部分需要替换为*来达到保密效果;
- 银行卡号一部分需要替换为 *
- 身份证号一部分需要替换为 *
把这个工具类分享出来
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 }
以上是关于JAVA从控制台输入身份证号码,把生日用星号代替再打印出来的主要内容,如果未能解决你的问题,请参考以下文章