简单的字符串匹配可以有一下方式:
1、NSString自带的函数方法:
-(BOOL) hasPrefix:(NSString *) astring;检查字符串是否以astring开头;
-(BOOL) hasSuffix:(NSString *) astring;检查字符串是否以astring结尾;
使用方式:
NSString *filename=@"hello,world"; if([filename hasPrefix:@"hello"]){ ... } if([filename hasSuffix:@"world"]){ ... }
如果想知道字符串内的某处是否包含其他的字符串,使用rangeOfString:
-(NSRange) rangeOfString:(NSString *) astring;
将rangeOfString:发送给一个NSString对象时,传递的参数时要查找的字符串。它会返回一个NSRange struct来告诉你一个与这个字符串相匹配的部分从哪里开始以及匹配上的字符个数。
NSRange range=[filename rangeOfString:@"o,world"]; if(range.location!=NSNotFound) { return true; } else { return false; }
2、如果是数值或者字符可以ASCII码判断
3、正则表达式:
正则表达式入门网址推荐(此网页下面还要深入学习网址):http://deerchao.net/tutorials/regex/regex.htm
简单使用代码:
- (BOOL)matchStringFormat:(NSString *)matchedStr withRegex:(NSString *)regex { //SELF MATCHES一定是大写 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; if([predicate evaluateWithObject:matchedStr] == YES) { return YES; } else { return NO; } } - (BOOL)isFitNameFormat:(NSString *)inNameStr { if ([self matchStringFormat:inNameStr withRegex:@"^\\w{3,8}$"]) { return YES; } return NO; } - (BOOL)isFitPasswordFormat:(NSString *)inPasswordStr { if(PasswordLength == inPasswordStr.length) { //改成@"[a-z][A-Z][0-9]{3}"是错的 if([self matchStringFormat:inPasswordStr withRegex:@"[a-zA-Z0-9]{3}"]) { return YES; } } return NO; } - (BOOL)isFitPhoneFormat:(NSString *)inPhoneStr { //正则表达式,[0-9]或\d数值匹配,{11}十一个, if([self matchStringFormat:inPhoneStr withRegex:@"\\d{11}"]) { return YES; } return NO; }