java字符串指定脱敏汉字个数——常用工具

1.1需求

在实际开发中,前后端分离开发需要对参数加密或者脱敏的需求日益增多,今天接到的需求就是对用户信息的地址在返回前端的时候需要对 其做处理,需求如下:
在这里插入图片描述
就是将地址字符中的汉字的后6个进行脱敏。

1.2 工具类

//需要导入的包
    import java.util.regex.Pattern;
    import java.util.regex.Matcher;
public static String addrEnc(String tarStr){

        try {
            if(tarStr!=null){
                if(tarStr.length()>6){
                  //  String tarStr = "陕西省西安市雁塔区科技南路FTTH亿龙金河湾岳府郡(二区)1号楼3单元";
                    //因为是后六位汉字,所以将地址先倒置
                    String s=new StringBuilder(tarStr).reverse().toString();
                    System.out.println(s);
                    //正则规则(汉字)
                    String regEx="[\u4e00-\u9fa5]";
                    //进行正则匹配,获取汉字的位置
                    Matcher slashMatcher = Pattern.compile(regEx).matcher(s);
                    int mIdx = 0;
                    //如果到汉字则记录下下标
                    while(slashMatcher.find()) {
                        mIdx++;
                        //脱敏第6位汉字
                        int N=6;
                        if(mIdx == N){
                            break;
                        }
                    }
                    //slashMatcher.start()+1就是第6个汉字的下标,从总的字符串截取下来
                    String s1  =  s.substring(0,slashMatcher.start()+1);
                    // String s2=  s1.replaceAll(regEx,"*");
                   //将带有最后6位汉字的字符串用* 替换再和剩下的字符串拼接。
                    String s3=  s1.replaceAll(regEx,"*")+s.substring(slashMatcher.start()+1,s.length());
                    //最后将处理好的字符串倒置。
                     tarStr=new StringBuilder(s3).reverse().toString();
                    //这里的tarStr就是我们最终处理后的数据
                      System.out.println(tarStr);

                        }


            }
        } catch (Exception e) {
            //脱敏失败不做处理
        }
        return tarStr!=null?tarStr:"";
    }

1.3 应用展示

在这里插入图片描述
仅作记录。如有更好的方法望指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NotFoundObject.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值