如何屏蔽 Swift 4 中的文本字段?
How to masking textfield in Swift 4?
我想在 textfield.text 中屏蔽电子邮件,但我只得到中间的值。我想从中间获取值到@ gmail.com,如下例所示。
例如:
- 设 var = 12345678@gmail.com
输出= ****5678@gmail.com
- 设 var = 123456789@gmail.com
输出= ****56789@gmail.com
let email = "123456789@gmail.com"
let components = email.components(separatedBy: "@")
let result = hideMidChars(components.first!) + "@" + components.last!
print(result)
输出我得到:****5****@gmail.com
我的期望:****56789@gmail.com
尝试扩展字符串协议并声明一个变量,其中 returns 一个 .init(repeating: ,count):
extension StringProtocol {
var masked: String {
return String(repeating: "•", count: Swift.max(0, count - count/2)) + suffix(count/2)
}
}
用法如下:
let email = "123456789@gmail.com"
print(email.masked) //"••••••••••gmail.com"
如果您想要显示电子邮件的一部分,只需按如下方式操作后缀(计数 - 3):
return String(repeating: "•", count: Swift.max(0, count - count/2)) + suffix(count/2)
func hide(email: String) -> String {
let parts = email.split(separator: "@")
if parts.count < 2 {
return email
}
let name = parts[0]
let appendix = parts[1]
let lenght = name.count
if lenght == 1 {
return "*@\(appendix)"
}
let semiLenght = lenght / 2
var suffixSemiLenght = semiLenght
if (lenght % 2 == 1) {
suffixSemiLenght += 1
}
let prefix = String(repeating: "*", count: semiLenght)
let lastPart = String(name.suffix(suffixSemiLenght))
let result = "\(prefix)\(lastPart)@\(appendix)"
return result
}
let email = "123456789@gmail.com"
let result = hide(email: email)
print(result)
我想在 textfield.text 中屏蔽电子邮件,但我只得到中间的值。我想从中间获取值到@ gmail.com,如下例所示。
例如:
- 设 var = 12345678@gmail.com
输出= ****5678@gmail.com
- 设 var = 123456789@gmail.com
输出= ****56789@gmail.com
let email = "123456789@gmail.com"
let components = email.components(separatedBy: "@")
let result = hideMidChars(components.first!) + "@" + components.last!
print(result)
输出我得到:****5****@gmail.com
我的期望:****56789@gmail.com
尝试扩展字符串协议并声明一个变量,其中 returns 一个 .init(repeating: ,count):
extension StringProtocol {
var masked: String {
return String(repeating: "•", count: Swift.max(0, count - count/2)) + suffix(count/2)
}
}
用法如下:
let email = "123456789@gmail.com"
print(email.masked) //"••••••••••gmail.com"
如果您想要显示电子邮件的一部分,只需按如下方式操作后缀(计数 - 3):
return String(repeating: "•", count: Swift.max(0, count - count/2)) + suffix(count/2)
func hide(email: String) -> String {
let parts = email.split(separator: "@")
if parts.count < 2 {
return email
}
let name = parts[0]
let appendix = parts[1]
let lenght = name.count
if lenght == 1 {
return "*@\(appendix)"
}
let semiLenght = lenght / 2
var suffixSemiLenght = semiLenght
if (lenght % 2 == 1) {
suffixSemiLenght += 1
}
let prefix = String(repeating: "*", count: semiLenght)
let lastPart = String(name.suffix(suffixSemiLenght))
let result = "\(prefix)\(lastPart)@\(appendix)"
return result
}
let email = "123456789@gmail.com"
let result = hide(email: email)
print(result)