求助:使用正则表达式实现符合要求的邮箱掩码功能
邮箱掩码实现方案
根据你的需求,核心规则是:
- @前的本地部分:若长度大于3,保留最后3个字符,其余替换为星号;长度≤3则全部保留
- @后的域名部分:若长度大于3,保留前3个字符,其余替换为星号;长度≤3则全部保留
下面是符合要求的Kotlin实现代码:
fun maskEmail(email: String): String { // 分割邮箱为本地部分和域名部分,假设输入为合法邮箱(包含且仅包含一个@) val parts = email.split("@") if (parts.size != 2) return email // 处理非法邮箱,直接返回原字符串 val localPart = parts[0] val domainPart = parts[1] // 处理本地部分 val maskedLocal = when { localPart.length <= 3 -> localPart else -> "*".repeat(localPart.length - 3) + localPart.takeLast(3) } // 处理域名部分 val maskedDomain = when { domainPart.length <= 3 -> domainPart else -> domainPart.take(3) + "*".repeat(domainPart.length - 3) } return "$maskedLocal@$maskedDomain" }
代码验证
用你的测试用例验证:
- 输入
asxyz@ifyourock.com→ 输出**xyz@ify********** - 输入
xyz@gmail.com→ 输出xyz@gma****** - 输入
asxyz.abc@gmail.com→ 输出******abc@gma****** - 输入
car@domain.com→ 输出car@dom******* - 输入
as@domain.com→ 输出as@dom*******
所有输出均符合你的需求。
内容的提问来源于stack exchange,提问作者IRON MAN
相关产品推荐
相关产品推荐

