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

代码说明:

  1. 使用 Scanner 获取输入的身份证号、起始位和结束位。
  2. 判断输入参数是否合法,若不合法则输出错误信息并退出程序。
  3. 使用 StringBuilder 类存储身份证号,方便修改字符。
  4. 使用循环将第 s~t 位替换为 '*'。
  5. 输出处理后的身份证号。

原文地址: https://www.cveoy.top/t/topic/jqZE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录