所以我正在开发一个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];
现在它正在按我的意愿工作,但它只获得它的第一个数字。可能存在不确定数量的双打,我需要获得最大的双打。最好的方法是什么?
答案 0 :(得分: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);
}