- 简要
- 代码
该函数,
1.若想自动脱敏,可以仅传入数据即可
2.若想通过自己传入位置脱敏,又不想报错,可以传入数据,开始位置,结束位置即可
3.若想通过自己传入位置脱敏,且不和规数据不脱敏,代码报错,可以基于2,传入false
package com.bigdata.hive.udf; import com.bigdata.hive.Tools.StringTools; import org.apache.hadoop.hive.ql.exec.Description; import org.apache.hadoop.hive.ql.exec.UDF; import java.util.regex.Pattern; @Description( name = "udf_sjtm_place", value = "_FUNC_('hello',1,2,false) - Returns h****llo ", extended = "Example:n true : Ignore exception ,you can no writen > SELECt _FUNC_('hello',1,10) FROM dual LIMIT 1;n return h**** " ) public class UdfSjtmPlace extends UDF { public String evaluate(final String s,int begin ,int end) { if (StringTools.isNotNull(s) && begin < end && begins.length() ){ return s.substring(0,begin)+"****"; }else{ return s.substring(0,begin)+"****"+s.substring(end,s.length()); } } return s; } public String evaluate(final String s,int begin ,int end,boolean flag) { if(flag== true){ return this.evaluate(s,begin,end); }else { return s.substring(0,begin)+"****"+s.substring(end,s.length()); } } public String evaluate(final String s) { switch (s.length()){ case 0: return "****"; case 1: return "****"; case 2: return s.substring(0,1)+"*****"; case 3: return s.substring(0,1)+"****"+s.substring(s.length()-1,s.length()); case 4: return s.substring(0,1)+"****"+s.substring(s.length()-1,s.length()); case 5: return s.substring(0,1)+"****"+s.substring(s.length()-1,s.length()); case 6: return s.substring(0,1)+"****"+s.substring(s.length()-1,s.length()); case 7: return s.substring(0,1)+"****"+s.substring(s.length()-1,s.length()); default: return s.substring(0,3)+"****"+s.substring(s.length()-4,s.length()); } } public static void main(String[] args) { String s ="620121187502135416"; System.out.println("值为: "+new UdfSjtmPlace().evaluate(s )); } }
单参数运行效果:new UdfSjtmPlace().evaluate(s )
三个参数运行效果:new UdfSjtmPlace().evaluate(s,3,100 )
四个参数运行效果图:new UdfSjtmPlace().evaluate(s,3,100,false )
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)