首页 > 解决方案 > 屏蔽 Swift 字符串中的字符

问题描述

Swift 5 中是否有一种规范的方法来屏蔽一个 Swift 字符串中不包含(完全匹配)在第二个“屏蔽”字符串中的所有字符?也许使用地图和/或过滤器?

例如 maskString("abcdba", withMask: "ab") -> "abba"

或者

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

标签: swiftstringswift5

解决方案


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"

推荐阅读