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从控制台输入身份证号码,把生日用星号代替再打印出来的主要内容,如果未能解决你的问题,请参考以下文章

用sql语句怎么提取身份证号码中的生日信息

电话或身份证中间用星号代替

Excel自动从身份证中提取生日和性别

求解用java语言 编写一个身份证的类,可以用来验证身份证的长度,并可以显示地址码,生日,性别。

java根据身份证号码得到生日和性别

敏感信息(用户名,银行卡号,身份证号,手机号)用星号代替