Я пытаюсь сделать простое Regex в Swift 3, извлекая номер из входной строки.Swift 3 extract group из Regex - NS-мостовой беспорядок
Поскольку я не знаком с iOS, это оказалось довольно сложной задачей. Я очень подозреваю, что моя ошибка заключается в использовании одновременно String
и NSString
.
let url = "a5b"
let nsUrl = url as NSString
let regex = try! NSRegularExpression(pattern: "a(\\d)b", options: [])
let matches = regex.matches(in: url, options: [], range: NSRange(location: 0, length: url.characters.count))
somestuff(str: nsUrl.substring(with: matches[1].range))
завершается за исключением следующего:
Нагрузочным приложение из-за неперехваченное исключение 'NSRangeException', причина: «*** - [__ NSSingleObjectArrayI objectAtIndex]: индекс 1 за пределы [0 .. 0] '
Каков правильный способ согласования и получения номера?
Это не может быть критическим в вашем примере данных, но 'url.characters.count' должен быть изменен на' url.utf16.count'. 'NSRegularExpression' использует местоположение и длину на основе UTF-16. – OOPer