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 应用展示

java字符串指定脱敏汉字个数——常用工具_第1张图片
仅作记录。如有更好的方法望指正。

你可能感兴趣的:(java基础,java)