Ios 将NSArray的第一个索引处的字符串分配给NSString

Ios 将NSArray的第一个索引处的字符串分配给NSString,ios,objective-c,nsstring,nsarray,Ios,Objective C,Nsstring,Nsarray,我正在尝试从名为“newString”的字符串中查找特定的url字符串。我使用下面的代码来检测链接并将它们保存在一个名为“matches”的数组中。我感兴趣的特定字符串位于数组的matches[1]索引处: NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil]; NSArray* matches = [detector matchesInString:n

我正在尝试从名为“newString”的字符串中查找特定的url字符串。我使用下面的代码来检测链接并将它们保存在一个名为“matches”的数组中。我感兴趣的特定字符串位于数组的matches[1]索引处:

NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray* matches = [detector matchesInString:newString options:0 range:NSMakeRange(0, [newString length])];
NSLog(@"MATCHES %@", matches[1]);

如何将位于匹配项[1]处的字符串分配给NSString,以便在程序中进一步使用它?

NSString*stringYouWant=[matches objectAtIndex:1]

甚至


NSString*stringYouWant=[[matches objectAtIndex:1]copy]

在您的代码中

NSDataDetector *linkDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray *matches = [linkDetector matchesInString:string options:0 range:NSMakeRange(0, [string length])];
for (NSTextCheckingResult *match in matches) {
  if ([match resultType] == NSTextCheckingTypeLink) {
    NSURL *url = [match URL];
    NSLog(@"found URL: %@", url);
    break;
  }
}
另一种方法是使用
NSRegularExpression

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"(?i)\\b((?:[a-z][\\w-]+:(?:/{1,3}|[a-z0-9%])|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))" options:NSRegularExpressionCaseInsensitive error:NULL];
NSString *match = [someString substringWithRange:[regex rangeOfFirstMatchInString:someString options:NSMatchingCompleted range:NSMakeRange(0, [someString length])]];
NSLog(@"%@", match);
以下代码>国家政府监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的以下代码>国家政府的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管部门的监管模式::::[[[[[[[[[[[[[[1-a-a-a-a-a-z][[[[a-a-z]][[[[a-a-a-a-z].[[[[[[a-a-a-a-a-z]].[[[[[[[[[a-a-a-a-a-a-z].[[[[[[[[[[a-a-a-a-a-a-z]]][[[[[[[[124;(\\([^\\ s()]+\\)*\\)\[^\\s`!()\[\\]{};:'\',«»']))“选项:nsregularexpressioncase不敏感错误:NULL]; NSString*match=[someString substringWithRange:[regex RangeofFirstMachinString:someString选项:NSMatchingCompleted range:NSMakeRange(0,[someString长度])]; NSLog(@“%@”,匹配);
这些解决方案中有一种适合您吗? 您是否尝试了另一个匹配(0、2、3等)? 你也可以尝试另一个索引的范围

NSDataDetector *detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray *matches = [detector matchesInString:newString options:0 range:NSMakeRange(0, [newString length])];
NSURL *urlYouWant = [[matches objectAtIndex:1] URL];
NSString *stringYouWant = [newString subStringWithRange:[[matches objectAtIndex:1] rangeAtIndex:1]];

那有什么问题吗。。。?NSLog(@“MATCHES%@”,MATCHES[1]);如果您正在获取日志,那么%@表示什么?@dasblinkenlight您告诉的代码行的问题将{426107}{这里是链接}作为输出。@KumarKl看到上面的注释当然我已经尝试过了。如果我记录,它会给出输出:{426107}{这里是链接}我只想要链接部分而不是哦,对不起,我有点过早:-)请参阅iPatels的答案。他完全正确。iPatel的解决方案也不起作用。在他的回答下面检查我的评论。你提供的第一个代码没有返回正确的url。它开始给我索引0处的链接,而我想要索引1处的链接。如果我使用匹配项[1]而不是行中的匹配项(NSTextCheckingResult*匹配项中的匹配项),则它会崩溃。我如何使用NSRegularExpression代码?我尝试了您提供的代码,它在日志中返回“垂直对齐:顶部”。现在该怎么办?