關於字串的一些常用判斷 是否全部為數字 是否包含有數字 是否包含有英文

梵塵yst發表於2017-11-01

//判斷是否為整形: - (BOOL)isPureInt:(NSString*)string{     NSScanner* scan = [NSScanner scannerWithString:string];     int val;     return[scan scanInt:&val] && [scan isAtEnd]; } //判斷是字串是否為小數 -(BOOL)isPureFloatNum:(NSString*)str{     if(str.length >= 3){     NSArray *aa = [str componentsSeparatedByString:@"."];     if ([self isPureInt:aa[0]] && [self isPureInt:aa[1]]) {         return YES;     } else {         return NO;     }     }else{         return NO;     }      }

一、判斷字串是否包含某一個字元

NSString *str1 = @"abcd";

NSString *str = @"a";

if ([str1 rangeOfString:str].location != NSNotFound) {

NSLog(@"這個字串中有a");

}

二、判斷字串中是否包含數字

#pragma mark - 判斷字串是否包含數字

- (BOOL)isStringContainNumberWith:(NSString *)str {

NSRegularExpression *numberRegular = [NSRegularExpression regularExpressionWithPattern:@"[0-9]" options:NSRegularExpressionCaseInsensitive error:nil];

NSInteger count = [numberRegular numberOfMatchesInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length)];

//count是str中包含[0-9]數字的個數,只要count>0,說明str中包含數字

if (count > 0) {

return YES;

}

return NO;

}

三、判斷字串中是否包含英文字母

#pragma mark - 判斷字串是否包含數字

- (BOOL)isStringContainNumberWith:(NSString *)str {

NSRegularExpression *numberRegular = [NSRegularExpression regularExpressionWithPattern:@"[A-Za-z]" options:NSRegularExpressionCaseInsensitive error:nil];

NSInteger count = [numberRegular numberOfMatchesInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length)];

//count是str中包含[A-Za-z]數字的個數,只要count>0,說明str中包含數字

if (count > 0) {

return YES;

}

return NO;

}

四、判斷字串中是否包含數字和字母

#pragma mark - 判斷字串是否包含數字

- (BOOL)isStringContainNumberWith:(NSString *)str {

NSRegularExpression *numberRegular = [NSRegularExpression regularExpressionWithPattern:@"A-Za-z0-9]" options:NSRegularExpressionCaseInsensitive error:nil];

NSInteger count = [numberRegular numberOfMatchesInString:str options:NSMatchingReportProgress range:NSMakeRange(0, str.length)];

//count是str中包含[A-Za-z0-9]數字的個數,只要count>0,說明str中包含數字

if (count > 0) {

return YES;

}

return NO;

}

//判斷是否 是純數字

//判斷是字串是否為數字

- (BOOL) deptNumInputShouldNumber:(NSString *)str

{

    NSString *regex = @"[0-9]*";

    NSPredicate *pred = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];

    if ([pred evaluateWithObject:str]) {

        return YES;

    }

    return NO;

}

//判斷是否包含數子字母

//直接呼叫這個方法就行

-(int)checkIsHaveNumAndLetter:(NSString*)password{

    //數字條件

    NSRegularExpression *tNumRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[0-9]"options:NSRegularExpressionCaseInsensitive error:nil];

    

    //符合數字條件的有幾個位元組

    NSUInteger tNumMatchCount = [tNumRegularExpression numberOfMatchesInString:password

                                                                       options:NSMatchingReportProgress

                                                                         range:NSMakeRange(0, password.length)];

    

    //英文字條件

    NSRegularExpression *tLetterRegularExpression = [NSRegularExpression regularExpressionWithPattern:@"[A-Za-z]" options:NSRegularExpressionCaseInsensitive error:nil];

    

    //符合英文字條件的有幾個位元組

    NSUInteger tLetterMatchCount = [tLetterRegularExpression numberOfMatchesInString:password options:NSMatchingReportProgress range:NSMakeRange(0, password.length)];

    

    if (tNumMatchCount == password.length) {

        //全部符合數字,表示沒有英文

        return 1;

    } else if (tLetterMatchCount == password.length) {

        //全部符合英文,表示沒有數字

        return 2;

    } else if (tNumMatchCount + tLetterMatchCount == password.length) {

        //符合英文和符合數字條件的相加等於密碼長度

        return 3;

    } else {

        return 4;

        //可能包含標點符號的情況,或是包含非英文的文字,這裡再依照需求詳細判斷想呈現的錯誤

    }

    

}


相關文章