我只是试图掩盖如下字符串,但在做了一些搜索和研究之后我找不到我想要的东西。
字符串a =" 0123456789" masked =" xxxxxxx789"
我在这个问题http://stackoverflow.com/questions/41224637/masking-first-and-last-name-string-with中修改了解决方案,但它只是更改了与模式不匹配的字符串。我不知道如何改变模式以符合我的意思。
答案 0 :(得分:6)
您可以使用集合方法suffix(_ maxLength: Int)
获取字符串的最后3个字符,并填充重复“x”的字符串的其他部分:
编辑/更新
Swift 4或更高版本
extension StringProtocol {
var masked: String {
return String(repeating: "•", count: Swift.max(0, count-3)) + suffix(3)
}
}
let string = "0123456789"
print(string.masked) // "•••••••789\n"
答案 1 :(得分:0)
这完全符合您的要求:
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
这里发生的是你使用enumerated()
方法得到字符串的字符数组,然后根据条件将每个字符映射到一个值:
condtionIndex
,我们会用x
(掩码)替换该角色。答案 2 :(得分:-2)
你可以用这个
NSString *phone = @"0123456789";
NSString *lastChr = [phone substringFromIndex: [phone length] - 3];
NSMutableString *mask = [[NSMutableString alloc]init];
for (int i=0; i<[phone length]-3; i++) {
[mask appendString:@"*"];
}
[mask appendString:lastChr];