在Java中,可以使用正则表达式和字符串操作来实现手机号中间四位脱敏。以下是一个示例代码:
```java
public class PhoneUtils {
// 手机号中间四位脱敏
public static String desensitize(String phone) {
if (phone == null || phone.length() != 11) {
return phone;
}
return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
}
}
```
以上代码中,`desensitize`方法用于将手机号中间四位脱敏。首先判断手机号是否为11位,如果不是则直接返回原始值。然后使用正则表达式将手机号中间四位替换成`****`,最后返回脱敏后的手机号。
在实际应用中,可以将该方法封装成工具类,方便在其他地方调用。例如,在Spring MVC中,可以通过注入该工具类来对手机号进行脱敏。以下是一个示例代码:
```java
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/user")
public class UserController {
private final PhoneUtils phoneUtils;
public UserController(PhoneUtils phoneUtils) {
this.phoneUtils = phoneUtils;
}
@GetMapping("/profile")
public String userProfile(Model model) {
String phone = "13812345678"; // 假设用户手机号为13812345678
String desensitizedPhone = phoneUtils.desensitize(phone);
model.addAttribute("phone", desensitizedPhone);
return "profile";
}
}
```
以上代码中,`userProfile`方法用于展示用户个人资料页面。首先获取用户手机号,并调用`desensitize`方法对其进行脱敏,然后将脱敏后的手机号添加到模型中,最后返回一个视图名称,用于展示用户个人资料。在前端中,可以使用`${phone}`表达式来显示脱