0

だから私はiPhoneアプリに取り組んでおり、テキストの写真を撮り、その写真をOCRして私に送り返し、正規表現を使用して文字列を検索し、xxxx.xxまでの二重値を探します。 .

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];

現在、私が望むように機能していますが、最初の数字しか得られません。不確定な数の double が存在する可能性があり、最大のものを取得する必要があります。そのための最善の方法は何ですか?

4

1 に答える 1

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);
    }
于 2012-08-25T00:37:26.463 に答える