Я пытался найти совпадение подстроки в строке и получить совпадающую позицию.Метод swift distance() вызывает фатальную ошибку: не может увеличивать endIndex
Я не могу понять, что случилось со следующим кодом:
let str1 = "hello#゚Д゚"
let cmp = "゚Д゚"
let searchRange = Range(start: str1.startIndex, end: str1.endIndex)
let range = str1.rangeOfString(cmp, options: .allZeros, range: searchRange)
println("\(searchRange), \(range!)") // output: 0..<9, 6..<9
let dis = distance(searchRange.startIndex, range!.startIndex) // fatal error: can not increment endIndex! reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0).
// let dis = distance(searchRange.startIndex, range!.endIndex) // This will go and output: distance=7
println("distance=\(dis)")
В качестве комментариев предложенных, хотя range
имели действительные значения, метод расстояния() бросил фатальную ошибку.
Если я ошибаюсь в отношении использования расстояния(), какой метод следует использовать для архивирования цели? Любой совет будет полезен. Благодарю.
Для того, чтобы работать, 'distance' нуждается в пусковом и конечном диапазоне от одного и того же контейнера. Вам нужна функция поиска, но Swift не имеет ее в своей библиотеке, которая будет делать то, что вы хотите. –
что вы пытаетесь сделать? получить диапазон подстроки? – kap