คำถามของคุณมี 2 ส่วนสำคัญ:
เป็น regex นั่นตรงกับทุกตัวอักษรแต่แรก 6 คนและสุดท้าย 2
let regexPattern = "(?<=.{6}).(?=.*.{2}$)"
แล้ว
ขอเลื่อนส่ง String
นั่นต้องใช้ค regex และหน้ากากมัน:
extension String {
func masked(matching regexPattern: String, with template: String = "*") throws -> String {
let regex = try NSRegularExpression(pattern: regexPattern, options: NSRegularExpression.Options.caseInsensitive)
let range = NSMakeRange(0, count)
return regex.stringByReplacingMatches(in: self, options: [], range: range, withTemplate: template)
}
}
วิธีการใช้:
let cardNumber = "5890040000000016"
let regexPattern = "(?<=.{6}).(?=.*.{2}$)"
print("Output:", try! cardNumber.masked(matching: regexPattern))
ส่งออก: 589004********16
#"..."#
มากกว่า"..."
เพราะว่าน่ารำคาญของตัวละครหลบหนีจากสำหรับ regex