У меня проблема с этой функцией:
private func regexFirstGroup(in intext: String, pattern: String) -> String? {
do {
let nsrange = NSRange(intext.startIndex..<intext.endIndex, in: intext)
let regex = try NSRegularExpression(pattern: pattern, options: [NSRegularExpression.Options.dotMatchesLineSeparators])
if let match = regex.firstMatch(in: intext, options: [], range: nsrange) {
guard let mrange = Range(match.range(at: 1), in:intext) else {
return nil
}
return intext.substring(with: mrange)
}
} catch {
print("Pattern \(pattern) compiled with error: \(error)")
return nil
}
return nil
}
строка с:
return intext.substring(with: mrange)
выдает устаревшее предупреждение: «substring (with :)» устарела: пожалуйстаиспользуйте строковый индекс.
и когда я переключаю его на ожидаемый путь swift5:
return intext[mrange]
, чем это приводит к ошибке: для нижнего индекса 'subscript (_ :)' требуются типы 'String.Index 'и' Int 'эквивалентны
Это странно, потому что подписка должна работать с типами String.Index, а проверка константы mrange в быстрой справке показывает:
Declaration
let mrange: Range<String.Index>
Я неиспользуя импорт Foundation atm.