Objective c 目的C弦手法
我有以下NSString:Objective c 目的C弦手法,objective-c,regex,xcode,nsstring,Objective C,Regex,Xcode,Nsstring,我有以下NSString: @"Show study NCT01287026: Real-time MRI Right Heart Catheterization Using Passive Catheters" 由此,我需要创建2个新字符串。其中一个将保存NTC代码的11个字符: @"NCT01287026" 另一个是研究的标题: @"Real-time MRI Right Heart Catheterization Using Passive Catheters" 我有几个类似的字
@"Show study NCT01287026: Real-time MRI Right Heart Catheterization Using Passive Catheters"
由此,我需要创建2个新字符串。其中一个将保存NTC代码的11个字符:
@"NCT01287026"
另一个是研究的标题:
@"Real-time MRI Right Heart Catheterization Using Passive Catheters"
我有几个类似的字符串。他们都以“展示研究NTC*********”开头。最好的办法是什么
我可以找到出现“NTC”的地方,但我不确定如何用后面的其他8个字符创建新字符串。我还需要字符串的其余部分(学习标题),长度不同
NSArray *words = [input componentsSeparatedByString:@": "];
NSString *nct = [words[0] stringByReplacingOccurrencesOfString:@"Show study " withString:@""];
NSString *title = words[1];
请查看或以了解可以发送到字符串的许多有用消息。您可以使用:
NSString *string = @"Show study NCT01287026: Real-time MRI Right Heart Catheterization Using Passive Catheters";
NSString *nctString;
NSString *title;
NSScanner *scanner = [[NSScanner alloc] initWithString:string];
[scanner scanUpToString:@"NCT" intoString:nil];
[scanner scanUpToString:@":" intoString:&nctString];
[scanner scanString:@": " intoString:nil];
[scanner scanUpToCharactersFromSet:[NSCharacterSet illegalCharacterSet] intoString:&title];
可以使用以下正则表达式选择第一个字符串:
\d{8}
()
这适用于第二个字符串::.+
()
您可以使用这些来获取字符串,如下所示:
NSString *string = @"Show study NCT01287026: Real-time MRI Right Heart Catheterization Using Passive Catheters";
NSError *error;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"\d{8}"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, [string length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
//first match
}];
发件人:
然后重复使用第二个正则表达式。谢谢。我们将很快就答案进行投票。