NSDataDetector телефонные номера - PullRequest
1 голос
/ 24 июля 2011

Я использую NSDataDetector для разбора текста и получения чисел.Вот мой код:

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

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

for (NSTextCheckingResult *match in matches) {


        if ([match resultType] == NSTextCheckingTypePhoneNumber) {

            self.theNumber = [match phoneNumber];
        }
    }

Проблема с этим в том, что он иногда возвращает что-то вроде этого:

Телефон: 9729957777 ИЛИ 9729957777x3547634

Я не хочу этогопоявиться и удалить его будет сложнее, чем использовать код регулярного выражения для получения чисел.Есть ли у вас идеи о том, как получить только номер.

1 Ответ

2 голосов
/ 24 июля 2011

Лично я бы просто использовал -substringWithRange: в строке, чтобы удалить все прошедшее, включая символ 'x':

NSString * myPhoneNum = @"9729957777x3547634";
NSRange r = [myPhoneNum rangeOfString:@"x"];
if (r.location != NSNotFound) {
    myPhoneNum = [myPhoneNum substringWithRange:NSMakeRange(0, r.location)];
}
NSLog(@"Fixed number: %@", myPhoneNum);

В любом случае, есть идея, откуда взялся x3547634?

...