用星号替换字符

时间:2018-02-23 09:37:41

标签: swift string replace nsstring

我的操场上有这个代码。

我已经将userID和电子邮件扩展名分开了。不过,除了*

之外,我想更改电子邮件的第一个和最后一个字符与.之间的字符

我试图通过任何电子邮件地址输入使其足够动态。有什么想法吗?谢谢您的意见。

let email = "asdfg.hjkl@gmail.com"
let atSign = email.index(of: "@") ?? email.endIndex
let userID = email[..<atSign]
print(userID + email.suffix(from: atSign))

2 个答案:

答案 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