Вы можете перечислить строку и применить преобразование карты, чтобы получить ожидаемый результат:
extension String {
var masked: String {
self.enumerated().map({ (index, ch) in
if index == 0
|| index == self.count - 1 {
return String(ch)
}
return "x"
}).joined()
}
}
let str = "hello"
print("after masking \(str.masked)") // Output - hxxxo
Преобразование карты вернет массив, поэтому используйте joined()
, чтобы преобразовать массив обратно в строку. Кроме того, обратите внимание, что вы должны типизировать ch для String как String(ch)
, потому что типом ch является «String.Element» (он же «Символ»).