我习惯在JavaScript中这样做:
var domains = "abcde".substring(0, "abcde".indexOf("cd")) // Returns "ab"
Run Code Online (Sandbox Code Playgroud)
Swift没有这个功能,如何做类似的事情?
我使用以下扩展方法来获取子字符串的NSRange数组:
extension String {
func nsRangesOfString(findStr:String) -> [NSRange] {
let ranges: [NSRange]
do {
// Create the regular expression.
let regex = try NSRegularExpression(pattern: findStr, options: [])
// Use the regular expression to get an array of NSTextCheckingResult.
// Use map to extract the range from each result.
ranges = regex.matches(in: self, options: [], range: NSMakeRange(0, self.characters.count)).map {$0.range}
}
catch {
// There was a problem creating the regular expression
ranges = []
}
return ranges
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我没有意识到为什么它有时不起作用.这是两个类似的案例,一个是作品而另一个不是:
那个工作: …