例如,您可以对小写字符使用模式匹配,并使用星号字符(*)替换与模式匹配的模式:
let name = "Johnny Tuck"
let pattern = Character("a")..."z"
let maskedName = String(name.characters.map { pattern ~= $0 ? Character("*") : $0 })
print(maskedName) // J***** T***
Run Code Online (Sandbox Code Playgroud)
如果目的不是替换小写字符,*而是掩盖不是给定单词的第一个字符(例如,特定分隔符" "),则可以String用分隔符分隔名称,并应用掩码所有分隔的单词(子名称)的初始字符除外,最后重建掩码字符串:
import Foundation
let name = "johnny lucky tuck"
let maskedName = name.components(separatedBy: " ")
.filter { !$0.isEmpty }.map { $0.characters }
.map { String($0.first!).uppercased() + String(repeating: "*", count: $0.dropFirst(1).count) }
.joined(separator: " ")
print(maskedName) // J***** L**** T***
Run Code Online (Sandbox Code Playgroud)
请注意uppercased()上面的内容,它将初始的非屏蔽字母设置为大写字母(即使它不是最初的).如果你不希望这个大写,只需删除.uppercased()上面的调用.
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |