Objective-C从字符串获取电子邮件地址

问题描述:

我有一个NSString包含几个电子邮件地址和一些其他随机文本。我希望能够提取电子邮件地址。例如,他们都有相同的域,例如@ business.com。最好的办法是什么?Objective-C从字符串获取电子邮件地址

样品字符串(HTML)

  <td colspan="2" bgcolor="#000000"> 
     <p align="center"><b><font color="#FFFFFF" size="2">title</font></b></p></td> 
    </tr> 

    <tr> 
     <td valign="top"> 

<font size="2"><b>lastname</b>, firstname A.,&nbsp;[email protected]</font><br> 

<font size="2"><b>lastname</b>, firstname A.,&nbsp;[email protected]</font><br> 

<font size="2"><b>lastname</b>, firstname,&nbsp;[email protected]</font><br> 

<font size="2"><b>lastname</b>, firstname,&nbsp;[email protected]</font><br> 

+0

是地址界定?基本上,我正在寻找一种模式。很可能,你可以使用'NSString'对象的'comonentsSeparatedByString:'方法。 – Jeremy 2013-02-15 22:45:05

+0

不,它们是列出名称,位置,电子邮件等结果字符串的一部分,仅由换行符分隔 – Chase 2013-02-15 22:46:38

+0

提供示例结果。正如Alex在答案中所暗示的那样,您可能会利用正则表达式。 – Jeremy 2013-02-15 22:48:56

我把为您创造一个例子的自由,因为我很感兴趣,我自己:

NSString *someHTML = @"<b>lastname</b>, firstname,&nbsp;[email protected]</font><b>lastname</b>, firstname,&nbsp;[email protected]</font><b>lastname</b>, firstname,&nbsp;[email protected]</font>"; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(\\w*@business.com)" options: NSRegularExpressionUseUnixLineSeparators error:nil]; 
NSArray *matches = [regex matchesInString:someHTML options:NSMatchingWithTransparentBounds range:NSMakeRange(0, someHTML.length)]; 
for (NSTextCheckingResult *result in matches) 
{ 
    NSString *email = [someHTML substringWithRange:[result range]]; 
    NSLog(email); 
} 

在使用NSRegularExpression有图案看看。