我目前正在使用NSDataDetectors查找链接:
-(void)setBodyText
{
NSString* labelText = [[message valueForKey:@"body"]gtm_stringByUnescapingFromHTML];
NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray *matches = [linkDetector matchesInString:labelText options:0 range:NSMakeRange(0, [labelText length])];
for (NSTextCheckingResult *match in matches) {
if ([match resultType] == NSTextCheckingTypeLink) {
NSURL *url = [match URL];
[bodyLabel addCustomLink:url inRange:[match range]];
NSLog(@"found URL: %@", url);
}
}
[bodyLabel setText:labelText];
[Utils alignLabelWithTop:bodyLabel];
}例如,如何使用NSDataDetectors解析@:
"Hello @sheehan, you are cool"我希望它能检测到@sheehan
注意:我想使用NSDataDetector或regex模式匹配。没有外观标签或控件等。
发布于 2011-08-16 20:13:02
您可以使用这个使用NSRegularExpression查找@name匹配的方法。
- (NSMutableArray *)findTwitterHandle:(NSString *)text {
NSError *error = nil;
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:@"(@[a-zA-Z0-9_]+)"
options:NSRegularExpressionCaseInsensitive
error:&error];
if (error != nil) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:nil
otherButtonTitles:@"Ok", nil];
[alert show];
[alert release];
}
NSMutableArray *siteNames = [NSMutableArray array];
NSArray *matches = [regex matchesInString:text options:0 range:NSMakeRange(0, [text length])];
for (NSTextCheckingResult *result in matches) {
[siteNames addObject:[text substringWithRange:result.range]];
}
[regex release];
return siteNames;
}此方法将返回包含所有匹配字符串的NSMutableArray。
https://stackoverflow.com/questions/7082668
复制相似问题