我的操场上有这个代码。
我已经将userID和电子邮件扩展名分开了。不过,除了*
.
之间的字符
我试图通过任何电子邮件地址输入使其足够动态。有什么想法吗?谢谢您的意见。
let email = "asdfg.hjkl@gmail.com"
let atSign = email.index(of: "@") ?? email.endIndex
let userID = email[..<atSign]
print(userID + email.suffix(from: atSign))
答案 0 :(得分:0)
我只找到了一个迭代解决方案:
let email = "asdfg.hjkl@gmail.com"
let atSign = email.index(of: "@") ?? email.endIndex
let userID = email[..<atSign]
print(userID + email.suffix(from: atSign))
var lastLetterInx = email.index(before:atSign)
var inx = email.startIndex
var result = ""
while(true) {
if (inx >= lastLetterInx) {
result.append(String(email[lastLetterInx...]))
break;
}
if (inx > email.startIndex && email[inx] != ".") {
result.append("*")
} else {
result.append(email[inx])
}
inx = email.index(after:inx)
}
print (result)
答案 1 :(得分:0)
这是一个使用正则表达式的解决方案,它只是一个额外的行
let email = "asdfg.hjkl@gmail.com"
let atSign = email.index(of: "@") ?? email.endIndex
let userID = email[..<atSign]
let hiddenUserID = userID.replacingOccurrences(of: "(?<!^)[^.]", with: "*", options: .regularExpression)
print(hiddenUserID + email.suffix(from: atSign)) // a****.****@gmail.com