初级编程题:电话号码脱敏

本题保让脱敏处埋前后的电诂号码的长度都是团区间|11,40]上的整数。
【例子】
示例 1:自测输入格式:1(3220)200-520
输入:"1(3220)200-520’
输出:“132--0520’
解释:11 个数字的电话号码,那意味着所有的数字都是本地号码。示例 2:自测输入格式:86-(010)20200526
输入:“86-(010)20200526’
输出:"+**-010-
-0526’解释:13 位数字,2 个数字是国家号码,另外 11 个数字是本地号码

public static void main(String[] args) {
    // 调用 desensitizePhoneNumber 方法,打印脱敏后的电话号码
    System.out.println("脱敏之后的结果是:" + desensitizePhoneNumber("1(3220)200-5*20"));
    System.out.println("脱敏之后的结果是:" + desensitizePhoneNumber("86-(010)20200526"));
    System.out.println("脱敏之后的结果是:" + desensitizePhoneNumber("6-(010)20200526"));
}

public static String desensitizePhoneNumber(String phoneNum) {
    // 使用 replaceAll 方法将字符串中的非数字字符替换为空字符串
    String phone = phoneNum.replaceAll("\\D+", "");
    
    // 计算电话号码的长度
    int length = phone.length();
    
    // 检查电话号码的长度是否小于 11 或大于 40
    if (length < 11 || length > 40) {
        // 如果长度不符合要求,返回错误提示信息
        return "phoneNum is error,please check!!";
    }
    
    // 截取电话号码的后 11 位到倒数第 8 位,并在其间插入"****"
    String local = phone.substring(length - 11, length - 8) + "-****-";
    
    // 如果电话号码长度为 11 位,则返回截取后的结果
    if (length == 11) {
        return local;
    }
    
    // 初始化结果字符串为"+"号
    String res = "+";
    
    // 循环遍历电话号码的前 11 位,在每个位置插入"*"号
    for (int i = 0; i < length - 11; i++) {
        // 在结果字符串中插入"*"号
        res += "*";
    }
    
    // 将结果字符串与截取后的本地号码拼接起来
    return res + "-" + local;
}

本题思路为:
11位和13位的电话号码后面的处理逻辑都是相同的
只需要区别对待前几位即可

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值