Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 目的C弦手法_Objective C_Regex_Xcode_Nsstring - Fatal编程技术网

Objective c 目的C弦手法

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" 我有几个类似的字

我有以下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" 
我有几个类似的字符串。他们都以“展示研究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
}];
发件人:


然后重复使用第二个正则表达式。

谢谢。我们将很快就答案进行投票。