2012-08-25 5 views
0

저는 iPhone 응용 프로그램에서 작업 중이며 일부 텍스트 사진을 찍습니다. 사진이 OCR로 처리되어 다시 전송 된 다음 정규 표현식을 사용하여 문자열을 검색합니다 xxxx.xx까지의 이중 값.알 수없는 값을 검색하는 NSRegularExpression

NSRegularExpression *regex = [NSRegularExpression 
           regularExpressionWithPattern:@"\\d?\\d?\\d?\\d?\\.\\d?\\d?" 
           options:0 
           error:&error]; 

NSRange range = [regex rangeOfFirstMatchInString:result 
              options:0 
              range:NSMakeRange(0, [result length])]; 

if([result length] > 0) 
{ 
    NSString *subString = [result substringWithRange:range]; 

    double r = [subString doubleValue]; 

지금 당장은 원하는대로 작동하지만 첫 번째 숫자 만 가져옵니다. 불확실한 수의 복식이있을 수 있으며 가장 큰 복식을 얻어야합니다. 그것에 대해 가장 좋은 방법은 무엇입니까?

답변

1

rangeOfFirstMatchInString 대신에 matchesInString : options : range를 사용하십시오. 이렇게하면 범위를 추출 할 수있는 NSTextCheckingResult 객체 배열이 제공됩니다.

NSRegularExpression *regex = [NSRegularExpression 
            regularExpressionWithPattern:@"\\d?\\d?\\d?\\d?\\.\\d?\\d?" 
            options:0 
            error:&error]; 
    NSArray *arr = [regex matchesInString:string options:NSMatchingReportCompletion range:NSMakeRange(0,string.length)]; 
    for (NSTextCheckingResult *obj in arr) { 
     double r = [[string substringWithRange:obj.range] doubleValue]; 
     NSLog(@"%f",r); 
    } 
+0

고마워요! 그게 훨씬 더 잘 작동, 그냥 좀 더 API를 탐색해야합니다. –

관련 문제