Я хочу найти первое вхождение строки, начинающейся с данного индекса.найти первое вхождение строки, начинающейся с заданного индекса
основе this answer Я создал следующие функции:
func index(of string: String, from startIndex: String.Index? = nil, options: String.CompareOptions = .literal) -> String.Index? {
if let startIndex = startIndex {
return range(of: string, options: options, range: startIndex ..< string.endIndex, locale: nil)?.lowerBound
} else {
return range(of: string, options: options, range: nil, locale: nil)?.lowerBound
}
}
, к сожалению, часть с индексом не работает.
Например следующий код возвращает nil
вместо 3
:
let str = "test"
str.index(of: "t", from: str.index(str.startIndex, offsetBy: 1))
Вы ограничив поиск неправильного диапазона. 'string.endIndex' должен быть' self.endIndex' (или просто 'endIndex'). –
Как всегда, вы правы @MartinR. Теперь это работает, спасибо! – Daniel