Я рекомендую регулярное выражение.
Шаблон ищет
- Буквально "open case",
- Необязательный символ пробела (
\\s?
)
- Одна или несколько цифр. (
\\d+
), который захвачен
Код оценивает все примеры:
let array = ["open case", "open case 1234", "open case id 3421", "open case no 9546", "open case number 5241", "open case 9552 open case", "open case open case 6842", "open case bla bla 5415 bla", "open case 1234 bla bla", "open case number 54675 bla bla bla"]
func evaluate(string : String) -> String? {
let pattern = "open case\\s?(\\d+)"
let regex = try! NSRegularExpression(pattern: pattern) // as the pattern is hard-coded try! is safe
if let match = regex.firstMatch(in: string, range: NSRange(string.startIndex..., in: string)) {
let range = Range(match.range(at: 1), in: string)!
return String(string[range])
}
return nil
}
let found = array.compactMap { evaluate(string: $0) } // ["1234", "9552", "6842", "1234"]
Если вы хотите рассмотреть (на самом деле игнорировать) все, что находится между open case
и целым числом, используйте шаблон
"open case\\D+(\\d+)"
\\D+
представляет один или несколько нецифровых символов.