验证车牌号的给定字符串

时间:2014-03-23 14:45:09

标签: objective-c

我需要使用Objective-C验证巴西车牌号码。

巴西车牌号码由三个字母字符+四个数字组成,例如ABC1234。

如何使用Objective-C以简单的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

我确信有人知道如何在2行或3行代码中执行此操作,但这是我到目前为止可以解决的问题:

    +(BOOL)validatePlacaString:(NSString *)inputedString{


// remove "-" and spaces from the string:
inputedString = [inputedString stringByReplacingOccurrencesOfString:@" " withString:@""];
inputedString = [inputedString stringByReplacingOccurrencesOfString:@"-" withString:@""];

NSLog(@"you have inputed '%@' for validation...", inputedString);

// get the first 3 chars:
NSRange range03 = NSMakeRange(0, 3);
// get the next 4 chars:
NSRange range34 = NSMakeRange(3, 4);


if ([inputedString length] == 7) {

    // convert to uppercase the given string:

    NSString *first3Chars = [[inputedString uppercaseString] substringWithRange:range03];
    NSString *last4Chars = [inputedString substringWithRange:range34];

    NSLog(@"first 3 chars --> '%@' last 4 chars --> '%@' ", first3Chars, last4Chars);

    // make sure you have only allowed chars in the first 3 chars:

    NSArray *first3CharsArray = [self convertToArray:first3Chars];


    BOOL valid = YES;

    for (NSString *s in first3CharsArray)
    {
        if ([@"ABCDEFGHIJKLMNOPQRSTUVXWYZ" rangeOfString:s].location != NSNotFound) {

            NSLog(@"VALID --> %@", s);

        }else{

            NSLog(@"NOT VALID --> %@", s);
            valid = NO;
            break;

        }
    }

    NSLog(@"String is valid --> %d", valid);

    if (valid) {

        if ([[self getNumbersFromString:last4Chars] length] == 4) {

            return YES;

        }else{

            return NO;

        }


    }else{

        return NO;
    }


}else{
    // inputed string is not 7!!!
 return NO;
    }

    return NO;

   }

 +(NSArray *)convertToArray:(NSString *)givenString{
NSMutableArray *arr = [[NSMutableArray alloc]init];
for (int i=0; i < givenString.length; i++) {
    NSString *tmp_str = [givenString substringWithRange:NSMakeRange(i, 1)];
    [arr addObject:[tmp_str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
}
return arr;
}

+(NSString*)getNumbersFromString:(NSString*)String{

NSArray* Array = [String componentsSeparatedByCharactersInSet:
                  [[NSCharacterSet decimalDigitCharacterSet] invertedSet]];

NSString* returnString = [Array componentsJoinedByString:@""];

return (returnString);

}