解决方案使用正则表达式尝试,
NSString *yourString = @"[email protected][email protected]";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
// detect email addresses
NSString *email = [yourString substringWithRange:match.range];
//this part remove the '_' between email addresses
if(match.range.location != 0){
if([email characterAtIndex:0]=='_'){
email = [email substringFromIndex:1];
}
}
//print the email address
NSLog(@"%@",email);
}];
编辑:如何收集它们,
声明这样的变量,
@property(nonatomic, strong) NSMutableArray *emailsArray;
_emailsArray = [[NSMutableArray alloc] init];
NSString *yourString = @"[email protected][email protected]";
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"[A-Z0-9a-z._%+-][email protected][A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
// detect email addresses
NSString *email = [yourString substringWithRange:match.range];
//this part remove the '_' between email addresses
if(match.range.location != 0){
if([email characterAtIndex:0]=='_'){
email = [email substringFromIndex:1];
}
}
//print the email address
NSLog(@"%@",email);
[self.emailsArray addObject:email];
}];
NSLog(@"%@",self.emailsArray);
然后只
你不能做到这一点。您可能需要一个不能是值的一部分的分隔符,或者如果它出现在值中,则必须转义分隔符。否则,无法知道如何正确拆分字符串。 – rmaddy 2013-05-01 04:56:14
我问了一个老大,他告诉我,我应该首先搜索字符串“@”字符。当我找到这个,然后我搜索一个“_”,并将其替换,如果它存在。作为“@”后的第一个下划线是分隔符。然后我应该从这个位置开始,然后重复上一步骤。直到字符串结束为止。 – Jpk 2013-05-01 05:01:16
好的,但我不明白为什么这比它应该更难。如果将分隔符更改为无法显示在有效电子邮件地址中的字符,对于每个人来说,这会更有意义。 – rmaddy 2013-05-01 05:05:44