如何检测一个 NSString 是否包含一个大写字母

How to detect whether a NSString contains one capital letter or not

我有一个用于输入密码的文本字段。 谁能告诉我如何检查我输入的文本是否包含一个大写字母? 我已经浏览过网络但未能得到我想要的东西。提前致谢。

这是我要添加签到的地方。

if([self.txtfldPw.text isEqualToString:@""] && [self.txtfldPw.text.length = ] && [self.txtfldEmail.text = ]) {
    UIAlertView *pwAlrt = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Password Must Be Of Six Characters And One Of The Letters Should Be Caps" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
    [pwAlrt show];
    [self.btnLogin setEnabled:YES];
}

试试这个

NSString *s = @"This is a string";  
int count=0;  
BOOL isUppercase;
for (i = 0; i < [s length]; i++) {
    isUppercase= [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[s characterAtIndex:i]];
   if (isUppercase)
      break;
}

isUppercase?NSLog("String contain uppercase letter"):NSLog("String does not contain uppercase letter")

这里使用来自 UITextField 或任何其他来源的字符串来查找它是否包含任何 uppercase

NSString *str = @"Apple";
//get all uppercase character set
NSCharacterSet *cset = [NSCharacterSet uppercaseLetterCharacterSet];
//Find range for uppercase letters
NSRange range = [str rangeOfCharacterFromSet:cset];
//check it conatins or not
if (range.location == NSNotFound) {
    NSLog(@"not any capital");
} else {
    NSLog(@"has one capital");
}

EDIT 根据您的要求: 1. 最少 6 个字符。 2. 至少其中一个应该是上限。所以Nirmal Choudhari的正则表达式可以用下面的方法来检查它是否有效

- (BOOL)containsValidPassword:(NSString*)strText
{
  NSString* const pattern = @"^.*(?=.{6,})(?=.*[a-z])(?=.*[A-Z]).*$";
  NSRegularExpression* regex = [[NSRegularExpression alloc] initWithPattern:pattern options:0 error:nil];
  NSRange range = NSMakeRange(0, [strText length]);
  return [regex numberOfMatchesInString:strText options:0 range:range] > 0;
}

用法:

NSString *str = @"appLe";
BOOL isValid = [self containsValidPassword:str];
if (isValid) {
    NSLog(@"valid");
} else {
    NSLog(@"not valid");
}

用这个来判断字符串中是否有一个或多个大写字母:

 NSString *string = @"Test";
NSString *lowercaseString = [string lowercaseString];

BOOL containsUppercaseLetter = ![string isEqualToString:lowercaseString];

试试这个。它将检查两个密码验证。 1. 密码必须包含一个大写字母和一个小写字母。 2.不允许有特殊字符。

- (BOOL)isPasswordValid:(NSString *)password
{
    NSCharacterSet * characterSet = [NSCharacterSet uppercaseLetterCharacterSet] ;
    NSRange range = [password rangeOfCharacterFromSet:characterSet] ;
    if (range.location == NSNotFound) {
        return NO ;
    }
    characterSet = [NSCharacterSet lowercaseLetterCharacterSet] ;
    range = [password rangeOfCharacterFromSet:characterSet] ;
    if (range.location == NSNotFound) {
        return NO ;
    }

    characterSet = [NSCharacterSet characterSetWithCharactersInString:@"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"] ;
    for (NSUInteger i = 0; i < [password length]; ++i) {
        unichar uchar = [password characterAtIndex:i] ;
        if (![characterSet characterIsMember:uchar]) {
            return NO ;
        }
    }
    return YES ;
}

只需使用以下代码来验证您的密码。

添加方法

- (BOOL)isValidPassword:(NSString*)password
{
    NSRegularExpression* regex = [[NSRegularExpression alloc] initWithPattern:@"^.*(?=.{6,})(?=.*[a-z])(?=.*[A-Z]).*$" options:0 error:nil];
    return [regex numberOfMatchesInString:password options:0 range:NSMakeRange(0, [password length])] > 0;
}

使用此代码检查条件。

if(![self isValidPassword:[password stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]]) {
    UIAlertView *pwAlrt = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Password Must Be Of Six Characters And One Of The Letters Should Be Caps" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
    [pwAlrt show];
    [self.btnLogin setEnabled:YES];
}
-(BOOL)passwordvarify:(NSString*)password // pass your password here it will return true if it contains one uppercase letter else false just call this method and evaluate your password on the basis of true and false
{

    int count=0;
    for (int i = 0; i < [password length]; i++) {
        BOOL isUppercase = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:[password characterAtIndex:i]];
        if (isUppercase == YES)
        {
            count++;
            break;

        }
    }
    if(count == 1)
    {
        NSLog(@"password have one uppercase letter");
        return true;
    }
    else
    {
        NSLog(@"password do not have uppercase letter");
        return false;

    }
}