Java身份证号码脱敏处理:屏蔽指定位数
Java身份证号码脱敏处理:屏蔽指定位数
问题描述:
中国的居民身份证号码长度为18位,是属于公民个人的敏感信息,在系统中显示时需要将其中某些字符屏蔽掉,用'*'来显示。现在给定一个身份证号码,要求屏蔽掉中间的第s~t位字符,其中1≤s≤t≤18,请输出处理后的号码。
输入格式:
一行,三个输入项,第一个是身份证号;第二个是整数s,表示屏蔽的起始位;第三个是整数t,表示屏蔽的结束位。
输出格式:
一行,处理后的身份证号。
示例输入:
110101199003078697 7 14
示例输出:
1101011********697
示例说明:
原始身份证号为110101199003078697,屏蔽第7~14位,即将第7~14位替换为'*',得到1101011********697。
代码实现:
import java.util.Scanner;
public class IdCardDesensitization {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String idCard = scanner.next();
int s = scanner.nextInt();
int t = scanner.nextInt();
if (s < 1 || s > 18 || t < 1 || t > 18 || s > t) {
System.out.println("输入参数错误!");
return;
}
StringBuilder result = new StringBuilder(idCard);
for (int i = s; i <= t; i++) {
result.setCharAt(i - 1, '*');
}
System.out.println(result.toString());
}
}
代码说明:
- 使用
Scanner获取输入的身份证号、起始位和结束位。 - 判断输入参数是否合法,若不合法则输出错误信息并退出程序。
- 使用
StringBuilder类存储身份证号,方便修改字符。 - 使用循环将第 s~t 位替换为 '*'。
- 输出处理后的身份证号。
原文地址: https://www.cveoy.top/t/topic/jqZE 著作权归作者所有。请勿转载和采集!