Маскировка символов в строке Swift - PullRequest
0 голосов
/ 11 июля 2019

Есть ли в Swift 5 канонический способ маскировать все символы в одной строке Swift, которые не содержатся (с точным соответствием) во второй «маскирующей» строке? Возможно, используя карту и / или фильтр?

например. maskString ("abcdba", withMask: "ab") -> "abba"

или

maskString ("abcdba", withMask: "ab", replaceWith: "?") -> "ab ?? ba"

1 Ответ

3 голосов
/ 11 июля 2019

Используйте replacingOccurrences с параметрами:

let str = "abcdba"

let result = str.replacingOccurrences(of: "[^ab]", with: "", options: .regularExpression)

print(result)  //"abba"

Или вы можете определить функцию следующим образом:

func maskString (
    _ str: String,
    withMask mask: String ,
    replaceWith replacement: String = ""
    ) -> String {
    return str
        .replacingOccurrences(of: "[^\(mask)]",
            with: replacement,
            options: .regularExpression)
}

И используйте это так:

maskString("abcdba", withMask: "ab")                    //"abba"
maskString("abcdba", withMask: "ab" , replaceWith: "?") //"ab??ba"
...