使用subString对重要信息进行星号处理

在项目中经常会有一些隐私敏感字段需要展示但不想要将信息全部展示给用户看,比如:手机号、身份证号、银行卡号、姓名等信息。那么我们就可以用subString()方法进行字符串截取再拼接。

介绍

首先介绍一下subString(index1, index2)的用法。
subString方法是对String字符串进行截取,两个参数分别为index1代表从第几位开始截取index2代表截取到第几位。需要注意的是这里的下标是从0开始计算的,例如现在需要把字符串“hello world”的“hello”截取下来,写法是:subString(0, 5)

接下来我就对手机号、身份证号、银行卡号、姓名四个信息进行*号处理。

操作

姓名

将姓名统一用“**”代替,只显示姓

    public static String subName(String name){
        String subName = name.substring(0, 1) + "**";
        return subName;
    }

原姓名:张三
转换后姓名:张**

手机号

将手机号中间4位用“*”代替

    public static String subMobile(String mobile){
        String subMobile = mobile.substring(0, 3) + "**" + mobile.substring(7, mobile.length());
        return subMobile;
    }

原手机号:13800000000
转换后手机号:138****0000

身份证号

将身份证号中间8位用“*”代替

    public static String subIdNo(String idNo){
        String subIdno = idNo.substring(0, 6) + "" + idNo.substring(14, idNo.length());
        return subIdno;
    }

原身份证号:642222222222222013
转换后身份证号:642222********2013

银行卡号

将银行卡号中间8位用“*”代替

    public static String subBankNo(String bankNo){
        String subBankno = bankNo.substring(0, 6) + "" + bankNo.substring(15, bankNo.length());
        return subBankno;
    }

原银行卡号:642222222222222013
转换后银行卡号:642222********2013

TODO:

在对String字符串进行截取时,我这里使用的是String进行拼接的,另外还可以使用StringBuffer和StringBuilder进行拼接,这涉及到的只是基本的Java基础知识,就简单介绍一下这三者之间的区别:

String:字符串常量,不可变,拼接时使用“+”,会产生一个新的String对象
StringBuffer:字符串变量,线程安全,使用append()方法拼接
StringBuilder:字符串变量,非线程安全,使用append()方法拼接
String < StringBuffer < StringBuilder

总结

  1. 操作少量数据时可选择使用String,对性能影响不大
  2. 在单线程下操作大量数据时选择StringBuilder,不需要考虑线程安全问题,速度也较快
  3. 在多线程下操作大量数据时选择StringBuffer,速度稍慢但安全可以得到保障
Last modification:July 10th, 2019 at 05:31 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment