【问题标题】:How to use NSScanner to scan from a string如何使用 NSScanner 从字符串中扫描
【发布时间】:2011-10-30 11:23:17
【问题描述】:

我有一个字符串,看起来像:

#chat :hi there

我想将:中的所有文本扫描成一个字符串,所以它以hi there结尾

我试过了

[[NSScanner scannerWithString:argument] scanUpToString:@":" intoString:&newarg];

但是newarg 只包含#chat。如何做到这一点?

【问题讨论】:

    标签: objective-c xcode cocoa nsstring


    【解决方案1】:

    示例字符串:

    #chat :Hello World,
    #chat :How are you doing?
    

    代码:

    NSString *theString =   @"#chat :Hello World,\n"
                             "#chat :How are you doing?";
    
    NSScanner *theScanner = [NSScanner scannerWithString:theString];
    NSCharacterSet *seperator = [NSCharacterSet characterSetWithCharactersInString:@":"];
    NSCharacterSet *newLine = [NSCharacterSet newlineCharacterSet];
    NSString *theText;
    
    while ([theScanner isAtEnd] == NO) {
    
        [theScanner scanUpToCharactersFromSet:seperator intoString:NULL];
        [theScanner setScanLocation: [theScanner scanLocation]+1];
        [theScanner scanUpToCharactersFromSet:newLine intoString:&theText];
    
        NSLog(@"%@",theText);
    
    }
    

    输出:

    你好,世界,
    你好吗?

    【讨论】:

    • 谢谢!请注意,setScanLocation 可能会超出字符串长度的范围。您应该添加以下检查:if ([theScanner isAtEnd] == NO)...
    【解决方案2】:

    考虑使用 if 语句来遍历扫描。您总是告诉计算机扫描字符“:”之前的所有内容,但听起来您实际上想要扫描“:”字符之后的所有内容。安妮的回答提供了一个很好的例子。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-27
      • 1970-01-01
      相关资源
      最近更新 更多