2014-10-30 2 views
0

Привет, у меня проблемы, если в строке нет номера телефона, а NSRegularExpression не может найти что-либо, что может произойти с приложением, но когда он найдет номер телефона, он в строке работает нормально без проблем. Как я могу остановить его от сбоев.NSRegularExpression не работает должным образом

NSRegularExpression *phoneexpression = [NSRegularExpression regularExpressionWithPattern:@"\\d{4}-\\d{4}"options:NSRegularExpressionCaseInsensitive error:NULL]; 
NSString *phString = TextString; 
NSString *PH = [phString substringWithRange:[phoneexpression rangeOfFirstMatchInString:phString options:NSMatchingCompleted range:NSMakeRange(0, [phString length])]]; 

Я думаю, что это проблема

NSString *PH = [phString substringWithRange:[phoneexpression rangeOfFirstMatchInString:phString options:NSMatchingCompleted range:NSMakeRange(0, [phString length])]]; 
+0

Вы пытались изменить 'NULL' на' & error'? покажите сообщение об ошибке, пожалуйста. –

ответ

0

Я думаю, вы получите NSRangeException.

Попробуй так:

NSString *PH = nil; 
NSRegularExpression *phoneexpression = [NSRegularExpression regularExpressionWithPattern:@"\\d{4}-\\d{4}"options:NSRegularExpressionCaseInsensitive error:NULL]; 
NSString *phString = TextString; 
NSRange rg = [phoneexpression rangeOfFirstMatchInString:phString options:NSMatchingCompleted range:NSMakeRange(0, [phString length])]; 

if(rg.location != NSNotFound) 
    PH = [phString substringWithRange:rg]; 

Важно, чтобы вы проверить возвращаемый диапазон перед передачей его в substringWithRange. Смотрите эту ссылку для получения дополнительной информации: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/#//apple_ref/occ/instm/NSString/substringWithRange:

EDIT: Также проверьте, что возвращаемый диапазон от rangeOfFirstMatchInString не нарушает граничные ограничения описывались в ссылке:

Вызывает NSRangeException если (aRange.location - 1) или (aRange.location + aRange.length - 1) находится за пределами приемника .

Смежные вопросы