1
我有一个范围索引数组,搜索一个长字符串中的几个短字符串的所有位置。我需要从较小索引到较大索引的这些已排序范围的数组。我如何做Ranges排序?如何在swift中对Range <Index>的数组进行排序?
我有一个范围索引数组,搜索一个长字符串中的几个短字符串的所有位置。我需要从较小索引到较大索引的这些已排序范围的数组。我如何做Ranges排序?如何在swift中对Range <Index>的数组进行排序?
斯威夫特2(原来的答案)
你可以使用每个范围的.startIndex
属性排序的范围。
实施例:
let words = "Hello world"
let range1 = words.rangeOfString("world")!
let range2 = words.rangeOfString("Hello")!
let range3 = words.rangeOfString("o w")!
let ranges = [range1, range2, range3] // ["6..<11", "0..<5", "4..<7"]
let sortedRanges = ranges.sort { $0.startIndex < $1.startIndex }
sortedRanges // ["0..<5", "4..<7", "6..<11"]
夫特3
相同,但使用.lowerBound
代替.startIndex
:
if let range1 = words.range(of: "world"),
range2 = words.range(of: "Hello"),
range3 = words.range(of: "o w") {
let ranges = [range1, range2, range3]
let sortedRanges = ranges.sorted { $0.lowerBound < $1.lowerBound }
sortedRanges // [{lowerBound 0, upperBound 5}, {lowerBound 4, upperBound 7}, {lowerBound 6, upperBound 11}]
}
还要注意的是sort
现在sorted
。
谢谢!很好的例子,清楚而有用! – VYT
使用数组排序功能 –
https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Closures.html –