使用 swift 中的 NSRange 按长度和位置对数组进行排序
Sort Array with NSRange in swift both by length and location
我正在尝试按长度和位置对 swift 中的 NSRanges 数组进行排序:
var allranges = [NSRange?]()
allranges.append(NSRange(location: 3, length: 5))
allranges.append(NSRange(location: 9, length: 2))
allranges.append(NSRange(location: 9, length: 1))
allranges.append(NSRange(location: 24, length: 5))
allranges.append(NSRange(location: 16, length: 9))
allranges.append(NSRange(location: 11, length: 6))
allranges.sortInPlace{ [=11=]!.location < !.location && [=11=]!.length < !.length}
print(allranges)
这是我打印的:
[可选((3,5)), 可选((9,2)), 可选((9,1)), 可选((24,5) ), 可选((11,6)), 可选((16,9))]
但我想要这个:
[可选((3,5)), 可选((9,1)), 可选((9,2)), 可选((24,5) ), 可选((11,6)), 可选((16,9))]
请帮忙!
你大概想按location
排序,如果location
相同,则按length
排序,例如:
var allranges = [NSRange]()
allranges.append(NSRange(location: 3, length: 5))
allranges.append(NSRange(location: 9, length: 2))
allranges.append(NSRange(location: 9, length: 1))
allranges.append(NSRange(location: 24, length: 5))
allranges.append(NSRange(location: 16, length: 9))
allranges.append(NSRange(location: 11, length: 6))
allranges.sortInPlace { [=10=].location == .location ? [=10=].length < .length : [=10=].location < .location }
我正在尝试按长度和位置对 swift 中的 NSRanges 数组进行排序:
var allranges = [NSRange?]()
allranges.append(NSRange(location: 3, length: 5))
allranges.append(NSRange(location: 9, length: 2))
allranges.append(NSRange(location: 9, length: 1))
allranges.append(NSRange(location: 24, length: 5))
allranges.append(NSRange(location: 16, length: 9))
allranges.append(NSRange(location: 11, length: 6))
allranges.sortInPlace{ [=11=]!.location < !.location && [=11=]!.length < !.length}
print(allranges)
这是我打印的:
[可选((3,5)), 可选((9,2)), 可选((9,1)), 可选((24,5) ), 可选((11,6)), 可选((16,9))]
但我想要这个:
[可选((3,5)), 可选((9,1)), 可选((9,2)), 可选((24,5) ), 可选((11,6)), 可选((16,9))]
请帮忙!
你大概想按location
排序,如果location
相同,则按length
排序,例如:
var allranges = [NSRange]()
allranges.append(NSRange(location: 3, length: 5))
allranges.append(NSRange(location: 9, length: 2))
allranges.append(NSRange(location: 9, length: 1))
allranges.append(NSRange(location: 24, length: 5))
allranges.append(NSRange(location: 16, length: 9))
allranges.append(NSRange(location: 11, length: 6))
allranges.sortInPlace { [=10=].location == .location ? [=10=].length < .length : [=10=].location < .location }