我需要使用Objective-C验证巴西车牌号码。
巴西车牌号码由三个字母字符+四个数字组成,例如ABC1234。
如何使用Objective-C以简单的方式解决这个问题?
答案 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);
}