标签:des style blog http color 使用
在计算机科学中,是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。在很多文本编辑器或其他工具里,正则表达式通常被用来检索和/或替换那些符合某个模式的文本内容。许多程序设计语言都支持利用正则表达式进行字符串操作。
在OC中使用正则表达式在处理字符串的匹配,查找等方面功能强大, 下面列举如下几种正则表达式的实例应用。
//利用正则表达式验证邮箱地址的合法性
-(BOOL)isValidateEmail:(NSString *)email {
NSString *emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", emailRegex];
return [emailTest evaluateWithObject:email];
}
1、创建联系?人类AddressPerson,联系?人可以存储姓名、地址、邮箱、电话号码。?
2、创建通讯录AddressBook类。?
3、通讯录可以添加联系?人。要求:验证邮箱格式是否正确,姓名不能为空。?
4、通讯录输出所有联系?人。要求:按照姓名?首字?母分组,使?用字典按?首字?母存储信息。?
5、可以按照姓名、电话号码进?行联系?人搜索。
?6、联系?人按姓名排序,要求使?用block。
<pre name="code" class="objc">@implementation AddressBook
- (instancetype)init
{
self = [super init];
if (self) {
_mDic=[[NSMutableDictionary alloc]initWithCapacity:5];
}
return self;
}
//验证邮箱格式是否正确的
- (BOOL)isValidateEmail:(NSString *)email
{
NSString * emailRegex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}";
NSPredicate * emailTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",emailRegex];
return [emailTest evaluateWithObject:email];
}
//通讯录可以添加联系人
- (void)addContacts:(AddressPerson *)contacts
{
NSString * name = [contacts name];
NSString * email = [contacts email];
if ([name isEqualToString:@""]|| name == nil || [self isValidateEmail:email] == NO ) {
NSLog(@"添加失败");
return;
}
NSString * key = [contacts group];
NSMutableArray * values = [_mDic objectForKey:key];
if (values == nil) {
NSLog(@"没有此分组");
NSMutableArray * valueArray = [[NSMutableArray alloc]init];
[valueArray addObject:contacts];
[_mDic setObject:valueArray forKey:key];
}else{
[values addObject:contacts];
}
}
//输出所有联系人
- (void)showAllContacts
{
for (NSString * key in _mDic) {
NSArray * values = [_mDic objectForKey:key];
NSLog(@"----%@----",key);
for (AddressPerson * ap in values) {
[ap showinfo];
}
}
}
//可以根据姓名,电话号码搜索联系人
- (AddressPerson *)accordingToName:(NSString *)name
{
for (NSString * key in _mDic) {
NSArray * allValue = [_mDic objectForKey:key];
for (AddressPerson * ap in allValue) {
NSString * newName = [ap name];
if ([newName isEqualToString:name]) {
return ap;
}
}
}
return nil;
}
- (AddressPerson *)accordingToPhoneNumber:(NSString *)phoneNumber
{
for (NSString * key in _mDic) {
NSArray * allValue = [_mDic objectForKey:key];
for (AddressPerson * ap in allValue) {
NSString * phone = [ap phoneNumber];
if ([phone isEqualToString:phoneNumber]) {
return ap;
}
}
}
return nil;
}
//联系人按照姓名排序,用block
- (void)sortForName
{
//先把key值排序,
//再把数组里面的名字排序
NSArray * keys = [_mDic allKeys];
// NSArray * sortKeys = [keys sortedArrayUsingSelector:@selector(compare:)];
NSArray * sortKeys = [keys sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [obj1 compare:obj2];
}];
for (NSString * key in sortKeys) {
NSLog(@"-----%@----",key);
NSArray * values = [_mDic objectForKey:key];
NSArray * sortArray = [values sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
return [[obj1 name]compare:[obj2 name]];
}];
for (AddressPerson * ap in sortArray) {
[ap showinfo];
}
}
}
object C 中通讯录 以及 正则表达式,布布扣,bubuko.com
标签:des style blog http color 使用
原文地址:http://blog.csdn.net/zuoyou1314/article/details/36213253