You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 4中掩码/混淆邮箱与手机号的最优实现方案是什么?

在Swift 4里处理邮箱和手机号的掩码/混淆,其实有挺简洁高效的实现方式,我给你拆解两种场景的最优解法,直接就能用到项目里👇

邮箱混淆实现

核心思路是把邮箱拆成本地前缀和域名后缀两部分,只混淆本地前缀:保留前缀的前2个字符和最后2个字符,中间用*填充;域名部分完全保留(毕竟域名公开也没啥问题)。

比如你给的例子satheesmk2@gmail.com,拆分后本地前缀是satheesmk2,取前2位sa、后2位k2,中间补6个*,最后拼接域名就得到sa******k2@gmail.com。

下面是封装好的Swift 4代码,还考虑了边界情况(比如本地前缀过短的情况):

func maskEmail(_ email: String) -> String {
    // 拆分邮箱为本地部分和域名部分
    let components = email.split(separator: "@")
    guard components.count == 2 else { return email } // 无效邮箱直接返回原字符串
    
    let localPart = String(components[0])
    let domainPart = String(components[1])
    
    // 处理本地部分:长度<=4时直接保留(避免出现sa**@xx.com这种奇怪的格式)
    guard localPart.count > 4 else { return email }
    
    let prefix = localPart.prefix(2)
    let suffix = localPart.suffix(2)
    let maskCount = localPart.count - 4
    let mask = String(repeating: "*", count: maskCount)
    
    return "\(prefix)\(mask)\(suffix)@\(domainPart)"
}

// 测试一下
let originalEmail = "satheesmk2@gmail.com"
let maskedEmail = maskEmail(originalEmail)
print(maskedEmail) // 输出 sa******k2@gmail.com
手机号混淆实现

针对你给的10位手机号例子9876543212,需求是保留前2位和最后1位,中间用*填充。核心思路是截取前后固定位数,中间补对应数量的*,同样可以封装成通用方法,方便调整保留的位数。

Swift 4代码实现:

func maskPhoneNumber(_ phone: String) -> String {
    // 先确保是纯数字的手机号(可以根据需求加更严格的验证)
    guard phone.allSatisfy({ $0.isNumber }) else { return phone }
    
    let totalLength = phone.count
    // 针对10位手机号的规则:前2后1,中间7个*
    guard totalLength == 10 else {
        // 如果是其他长度(比如国内11位),可以在这里调整规则,比如前3后4,中间4个*
        return phone
    }
    
    let prefix = phone.prefix(2)
    let suffix = phone.suffix(1)
    let maskCount = totalLength - 3
    let mask = String(repeating: "*", count: maskCount)
    
    return "\(prefix)\(mask)\(suffix)"
}

// 测试一下
let originalPhone = "9876543212"
let maskedPhone = maskPhoneNumber(originalPhone)
print(maskedPhone) // 输出 98*******2

额外小提示

  • 可以把这两个方法放到String的扩展里,用起来更顺手,比如"satheesmk2@gmail.com".masked()
  • 实际项目里记得先做输入合法性校验,比如邮箱格式验证、手机号位数验证,避免出现异常情况

内容的提问来源于stack exchange,提问作者sathishmc2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:57:14