gpt4 book ai didi

ios - 使用 NSRegularExpression 创建自定义 NSDataDetector 类型

转载 作者:行者123 更新时间:2023-11-29 10:39:14 25 4
gpt4 key购买 nike

我正在尝试为 UITextView 中的内容创建自定义数据检测器。我希望能够做这样的事情:

tv.dataDetectorTypes = UIDataDetectorTypeAll;

但我想使用基于以下正则表达式的自定义 UIDataDetector,而不是 UIDataDetectorTypeAll:

    NSError *error = nil;        
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:@"(ID: [0-9]+)"
options:NSRegularExpressionCaseInsensitive
error:&error];

我还希望检测到的 ID 是一个链接,它将带有 URL + ID 组合(http://www.stack.com?id)的 UIWebView 推送到导航堆栈。永远应该只有一个 ID。有什么想法吗?

谢谢!

最佳答案

这花了我一整天的时间,我终于找到并修改了这个 Ray Wenderlich 解决方案。显然,这是 iOS 7 中一个相当晦涩的新功能。

- (NSAttributedString *)makeAttributedAbstract:(NSString*)str
{
NSMutableAttributedString *mutableAttributedString = [[NSMutableAttributedString alloc] initWithString:str];

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(PMID: [0-9]+)" options:kNilOptions error:nil];

NSRange range = NSMakeRange(0, str.length);

[regex enumerateMatchesInString:str options:kNilOptions range:range usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange subStringRange = [result rangeAtIndex:1];
[mutableAttributedString addAttribute:NSLinkAttributeName value:@"pmid://" range:subStringRange];
}];

return (NSAttributedString*)mutableAttributedString;
}


- (BOOL)textView:(UITextView *)textView shouldInteractWithURL:(NSURL *)URL inRange:(NSRange)characterRange {
if ([[URL scheme] isEqualToString:@"pmid"]) {

NSString *pmid = [NSString stringWithFormat:@"http://www.ncbi.nlm.nih.gov/pubmed/%@", [self.sql getPmidForId:self.abstractId] ];

NSURL *url = [NSURL URLWithString:pmid];
NSLog(@"pmid: %@", url);
[self pushWebViewWithURL:url];

return NO;
}
return YES; // let the system open this URL
}

http://www.raywenderlich.com/48001/easily-overlooked-new-features-ios-7#textViewLinks

关于ios - 使用 NSRegularExpression 创建自定义 NSDataDetector 类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com