2014-10-30 1 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'을 (를) '오류'로 변경 했습니까? 오류 메시지를 보여주십시오. –

답변

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에 전달하기 전에 반환 범위를 확인하는 것이 중요합니다.

편집 : 또한 rangeOfFirstMatchInString에서 반환 범위는 참조에 설명 된 경계 제한 위반하지 않는 것을 확인하십시오

가 NSRangeException 을 경우를 발생시킵니다을 (https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/#//apple_ref/occ/instm/NSString/substringWithRange : 자세한 내용은이 참조를 참조하십시오 aRange.location - 1) 또는 (범위 + 위치 범위 - 길이 1)은 수신기 끝 부분에 있습니다.

관련 문제