Как замаскировать последний номер в Swift? - PullRequest
1 голос
/ 21 марта 2019

Как замаскировать последнюю строку с помощью swift, я сделал код, как показано ниже. но код показывает только последнее число, я ожидаю, что код отображает первые 5 цифр

вот мой код:

extension StringProtocol {
    var masked: String {
        return String(repeating: "•", count: Swift.max(0, count-5)) + suffix(5)
    } }

var name = "0123456789"

print(name.masked)

Я получаю вывод: ••••• 56789

но мои ожидания: 01234 •••••

1 Ответ

7 голосов
/ 21 марта 2019

Использовать префикс вместо суффикса

extension StringProtocol {
    var masked: String {
        return prefix(5) + String(repeating: "•", count: Swift.max(0, count-5))
    } 
}

Вместо этого вы также можете создать функцию для параметризации количества цифр и направления (или даже символа маски)

extension StringProtocol {
    func masked(_ n: Int = 5, reversed: Bool = false) -> String {
        let mask = String(repeating: "•", count: Swift.max(0, count-n))
        return reversed ? mask + suffix(n) : prefix(n) + mask
    } 
}

var name = "0123456789"

print(name.masked(5)) 
// 01234•••••

print(name.masked(5, reversed: true)) 
// •••••56789
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...