我知道我可以回退到NSStringfunction componentsSeparatedByString,所以这可能是一个挑剔,但我喜欢 Swift 的一件事是它是围绕简洁和简短的语法设计的。
我真的希望我能:var parts = myString.characters.split("${")但该功能仅适用于单个字符,而不适用于两个字符的字符串。我什至尝试过,var parts = myString.characters.split { $0 == "${" }但希望使用单个字符作为分隔符,而不是完整的字符串。:(
是否有我缺少的 api 函数,或者我是否需要坚持使用旧的NSString桥接函数?
这是一个相当简单的方法,可以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 支持并填补这些漏洞。
| 归档时间: |
|
| 查看次数: |
1018 次 |
| 最近记录: |