如何检测NSString是否包含特定的字符?
我有一个NSString对象,例如: – ($ 45,0000)
现在我想find这个string是否包含()或不
我怎样才能做到这一点?
你试图find它是否至less包含一个(
或)
? 你可以使用-rangeOfCharacterFromSet:
::
NSCharacterSet *cset = [NSCharacterSet characterSetWithCharactersInString:@"()"]; NSRange range = [mystr rangeOfCharacterFromSet:cset]; if (range.location == NSNotFound) { // no ( or ) in the string } else { // ( or ) are present }
如果给定的string包含给定的字符,下面的方法将返回Yes
-(BOOL)doesString:(NSString *)string containCharacter:(char)character { if ([string rangeOfString:[NSString stringWithFormat:@"%c",character]].location != NSNotFound) { return YES; } return NO; }
你可以使用它如下:
NSString *s = @"abcdefg"; if ([self doesString:s containCharacter:'a']) NSLog(@"'a' found"); else NSLog(@"No 'a' found"); if ([self doesString:s containCharacter:'h']) NSLog(@"'h' found"); else NSLog(@"No 'h' found");
输出:
2013-01-11 11:15:03.830 CharFinder [17539:c07]find了'a'
2013-01-11 11:15:03.831 CharFinder [17539:c07]找不到'h'
- (bool) contains: (NSString*) substring { NSRange range = [self rangeOfString:substring]; return range.location != NSNotFound; }
我得到了一个广泛的答案,你在我的代码中使用的问题。 此代码包括以下规则:1.没有特殊字符2.至less有一个大写和一个小英文字母3.至less有一个数字
BOOL lowerCaseLetter,upperCaseLetter,digit,specialCharacter; int asciiValue; if([txtPassword.text length] >= 5) { for (int i = 0; i < [txtPassword.text length]; i++) { unichar c = [txtPassword.text characterAtIndex:i]; if(!lowerCaseLetter) { lowerCaseLetter = [[NSCharacterSet lowercaseLetterCharacterSet] characterIsMember:c]; } if(!upperCaseLetter) { upperCaseLetter = [[NSCharacterSet uppercaseLetterCharacterSet] characterIsMember:c]; } if(!digit) { digit = [[NSCharacterSet decimalDigitCharacterSet] characterIsMember:c]; } asciiValue = [txtPassword.text characterAtIndex:i]; NSLog(@"ascii value---%d",asciiValue); if((asciiValue >=33&&asciiValue < 47)||(asciiValue>=58 && asciiValue<=64)||(asciiValue>=91 && asciiValue<=96)||(asciiValue>=91 && asciiValue<=96)) { specialCharacter=1; } else { specialCharacter=0; } } if(specialCharacter==0 && digit && lowerCaseLetter && upperCaseLetter) { //do what u want NSLog(@"Valid Password %d",specialCharacter); } else { NSLog(@"Invalid Password %d",specialCharacter); UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"Please Ensure that you have at least one lower case letter, one upper case letter, one digit and No Any special character" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; }
为什么总是用NSCharactorSet? 这是简单而强大的解决scheme
NSString *textStr = @"This is String Containing / Character"; if ([textStr containsString:@"/"]) { NSLog(@"Found!!"); } else { NSLog(@"Not Found!!");
您可以使用
NSString rangeOfString: (NSString *) string
见这里: https : //developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html%23//apple_ref/occ/instm/NSString/rangeOfString :
如果NSRange返回属性“位置”等于NSNotFound,那么该string不包含传递的string(或字符)。
- NSUserDefaultsDidChangeNotification和Today Extensions
- heightForRowAtIndexPath间歇性地崩溃
- Xcode没有embedded框架部分
- TouchID调用applicationWillResignActive和applicationDidBecomeActive
- 如何比较char *和NSString?
- 关于MagicalRecord,方法MR_saveNestedContexts和MR_save之间有什么区别
- 使用ECB的iOS 3DES会返回一半正确的数据
- 加快缓慢的Swift构建时间
- UIPageViewController与不同的ViewControllers,正确的方法?