高分悬赏:Java语言怎么把一个字符串中出现的电话号码,中间4位全部替换为****
问题描述:
高分悬赏:Java语言怎么把一个字符串中出现的电话号码,中间4位全部替换为****
答
直接遍历字符串,设置对应 inde 处的值为 *,参考伪代码:
public static void main(String[] args) {
String ss = "13241920182";
char [] chars = ss.toCharArray();
for(int i=4;i<8;i++) {
chars[i] = '*';
}
System.out.println(new String(chars));
}
答
public static void main(String[] args) {
String phone = "13021212122";
String newPhone = phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
System.out.println(newPhone);
}
答
/**
* 生成对应手机号脱敏数据
*
* @param phoneNo
* @return 152****4799
*/
public static String getPhoneNoMask(String phoneNo) {
if (!StringUtils.isBlank(phoneNo)) {
return phoneNo.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
return null;
}
答
public static void main(String[] args){
String str = "12345678912"; //手机号
System.out.println(str);
StringBuilder sb = new StringBuilder(str);
sb.replace(3,7,"****"); //[3,7)
System.out.println(sb);
}
答
String pNumber = "18255478965";
String newNumber = pNumber.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
答
/**
*号码脱敏
* @param msg content
* @param search "(\\d{3})\\d{4}(\\d{4})"
* @param replace "$1****$2"
* @return 脱敏后的字符串
*/
public static String desensitizeMsg(String msg, String search, String replace) {
final Pattern phonePattern = Pattern.compile(search);
Matcher phoneMatcher= phonePattern.matcher(msg);
if(phoneMatcher.find()){
final String[] split = msg.split(phoneMatcher.group());
//TODO: 这里replace要改下
return desensitizeMsg(split[0]+phoneMatcher.group().replace("",replace)+split[1],search,replace);
}else{
return msg;
}
}
这是一段伪代码,仅供参考。。。(谁有空补全下呀)
答
String phone=“18999999999”;
phone.replace(phone.substring(4,8),"****");