【问题标题】:Objective C String ManipulationObjective C 字符串操作
【发布时间】:2015-02-10 11:46:21
【问题描述】:

我有以下 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 NTC********”开头。解决这个问题的最佳方法是什么?

我可以找到“NTC”的出现,但我不知道如何用它后面的 8 个其他字符创建新字符串。我还需要长度不同的字符串(研究标题)的其余部分。

【问题讨论】:

    标签: objective-c regex xcode nsstring


    【解决方案1】:

    您可以使用此正则表达式选择第一个字符串:\d{8} (regexr)

    这适用于第二个字符串::.+ (regexr)

    您可以使用这些来获取字符串,如下所示:

    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
    }];
    

    发件人:Search through NSString using Regular Expression

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

    【讨论】:

      【解决方案2】:

      您可以为此使用NSScanner:

      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];
      

      【讨论】:

        【解决方案3】:
        NSArray *words = [input componentsSeparatedByString:@": "];
        NSString *nct = [words[0] stringByReplacingOccurrencesOfString:@"Show study " withString:@""];
        NSString *title = words[1];
        

        查看NSString Class Reference 或String Programming Guide,了解可以发送到字符串的许多有用消息。

        【讨论】:

        • 谢谢。很快就会对答案进行投票。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多