extension String {
func splitWithRegex(by regexStr: String) -> [String] {
guard let regex = try? NSRegularExpression(pattern: regexStr) else { return [] }
let nsRange = NSRange(startIndex..., in: self)
var index = startIndex
var array = regex.matches(in: self, range: nsRange)
.map { match -> String in
let range = Range(match.range, in: self)!
let result = self[index..<range.lowerBound]
index = range.upperBound
return String(result)
}
array.append(String(self[index...]))
return array
}
}
我使用上面的代码,使用regrex模式在Swift上拆分一个字符串,并返回一个字符串数组
如何返回一个[(String, Range)]
的对象,这样我就可以用分割后的子字符串作为键,用它的range作为值。
例如:
let string = "This is a string"
let stringRange = string.splitWithRegex(by: "\\s+")
结果:
(This, 0...4)
(is, 5...7)
(a, 8...9)
(string, 10...16)
1条答案
按热度按时间bvjveswy1#
我想应该可以了,但我不太确定:
播放:
输出:
一个二个一个一个
输出: