rij*_*hma 0 string masking swift
我只是尝试如下屏蔽String,但经过一些搜索和研究后却找不到我想要的东西。
字符串a =“ 0123456789”被屏蔽=“ xxxxxxx789”
我在以下问题中修改了解决方案http://stackoverflow.com/questions/41224637/masking-first-and-last-name-string-with,但它只是更改了与模式不匹配的String。我不知道如何更改模式以符合我的意思。
您可以使用collection方法获取字符串的最后3个字符,suffix(_ maxLength: Int)并重复“ x”填充字符串的另一部分:
编辑/更新
Swift 4或更高版本
extension StringProtocol {
var masked: String {
return String(repeating: "•", count: Swift.max(0, count-3)) + suffix(3)
}
}
Run Code Online (Sandbox Code Playgroud)
let string = "0123456789"
print(string.masked) // "•••••••789\n"
Run Code Online (Sandbox Code Playgroud)
这正是你想要的:
let name = "0123456789"
let conditionIndex = name.characters.count - 3
let maskedName = String(name.characters.enumerated().map { (index, element) -> Character in
return index < conditionIndex ? "x" : element
})
print("Masked Name: ", maskedName) // xxxxxxx789
Run Code Online (Sandbox Code Playgroud)
这里发生的是,您使用方法获取字符串的字符数组enumerated(),然后根据条件将每个字符映射到一个值:
condtionIndex我们用x(掩码)替换该字符。