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

现在它正在按我的意愿工作,但它只得到第一个数字。双打的数量可能不确定,我需要得到最大的一个。最好的方法是什么?

4

1 回答 1

1

使用 matchesInString:options:range: 代替 rangeOfFirstMatchInString。这将为您提供一个 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 回答