在 Swift 2 中使用多字符字符串拆分 Swift 字符串

Ken*_*and 1 string ios swift

我知道我可以回退到NSStringfunction componentsSeparatedByString,所以这可能是一个挑剔,但我喜欢 Swift 的一件事是它是围绕简洁和简短的语法设计的。

我真的希望我能:var parts = myString.characters.split("${")但该功能仅适用于单个字符,而不适用于两个字符的字符串。我什至尝试过,var parts = myString.characters.split { $0 == "${" }但希望使用单个字符作为分隔符,而不是完整的字符串。:(

是否有我缺少的 api 函数,或者我是否需要坚持使用旧的NSString桥接函数?

mat*_*att 5

这是一个相当简单的方法,可以split在单个字符上使用 Swift :

extension String {
    mutating func replace(target:String, with:String) {
        while let r = self.rangeOfString(target) {
            self.replaceRange(r, with: with)
        }
    }
    func split(separator:String) -> Array<String> {
        var s = self
        s.replace(separator, with:"?") // arbitrary improbable character :)
        return s.characters.split("?").map{String($0)}
    }
}

var s = "the${cat${sat${on${the${mat"
let arr = s.split("${")
Run Code Online (Sandbox Code Playgroud)

然而,rangeOfString实际上是 NSString 上的一个 Foundation 方法;如果您不导入 Foundation(或 UIKit),则该代码将无法编译。所以实际上这并没有比仅仅调用componentsSeparatedByString. 首先,我实际上并不理解您对此的反对意见;Swift 之所以有漏洞,正是因为它希望Foundation 支持并填补这些漏洞。