即使该
matchesInString()方法将a
String作为第一个参数,它也将在内部使用
NSString,并且range参数必须使用
NSStringlength而不是Swift字符串长度来给出。否则,对于“扩展字素簇”(例如“标志”),它将失败。
从 Swift 4 (Xpre 9)开始,Swift标准库提供了在
Range<String.Index>
和之间进行转换的函数
NSRange。
func matches(for regex: String, in text: String) -> [String] { do { let regex = try NSRegularexpression(pattern: regex) let results = regex.matches(in: text, range: NSRange(text.startIndex..., in: text)) return results.map { String(text[Range($0.range, in: text)!]) } } catch let error { print("invalid regex: (error.localizedDescription)") return [] }}例:
let string = "



