Как отделить номер телефона и код конференции от строки

У меня есть строка, как в формате ниже,

Позвоните по бесплатному номеру: 180012345678 (Индия)

Телефонный номер для звонков: +44-(0)123456789 (Великобритания)

Бесплатный звонок в Великобританию: 12345678910

https://www.google.com/

Код конференции: 123 456 56789

Как я могу отделить номера телефонов от этой строки в Objective-C

2 ответа

Решение

Вы можете использовать NSDataDetector ( https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSDataDetector_Class/)

Поддерживаются следующие типы:

NSTextCheckingTypeOrthography        = 1ULL << 0,
NSTextCheckingTypeSpelling           = 1ULL << 1,
NSTextCheckingTypeGrammar            = 1ULL << 2,
NSTextCheckingTypeDate               = 1ULL << 3,
NSTextCheckingTypeAddress            = 1ULL << 4,
NSTextCheckingTypeLink               = 1ULL << 5,
NSTextCheckingTypeQuote              = 1ULL << 6,
NSTextCheckingTypeDash               = 1ULL << 7,
NSTextCheckingTypeReplacement        = 1ULL << 8,
NSTextCheckingTypeCorrection         = 1ULL << 9,
NSTextCheckingTypeRegularExpression  = 1ULL << 10
NSTextCheckingTypePhoneNumber        = 1ULL << 11,
NSTextCheckingTypeTransitInformation = 1ULL << 12

ех.

NSError *error = NULL;
NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypePhoneNumber error:&error];

NSUInteger numberOfMatches = [detector numberOfMatchesInString:string options:0 range:NSMakeRange(0, [string length])];

NSArray *matches = [detector matchesInString: stringoptions:0 range:NSMakeRange(0, [string length])];

for (NSTextCheckingResult *match in matches) {
    NSRange matchRange = [match range];
    if ([match resultType] == NSTextCheckingTypePhoneNumber) {
        NSString *phoneNumber = [match phoneNumber];
    }
}

Проверьте этот код из другой темы, очень похожей на ваш вопрос: /questions/20650331/nsdatadetector-obnaruzhivaet-tekst-nomer-telefona/20650346#20650346

Другие вопросы по тегам