在Objective C中以特定字符拆分String

时间:2012-06-03 13:20:51

标签: objective-c

我们希望按特定字符拆分字符串而不删除字符。 例如,如果输入为:if (x>4) then {x = 1} 输出必须是:if, (, x, >, 4, ), then, {, x, =, 1, }

  • 我们尝试使用characterSetWithCharactersInString,但它会删除字符串中的字符..

谢谢!

2 个答案:

答案 0 :(得分:0)

查看NSScanner

然后执行类似

的操作
 NSScanner *scanner = [NSScanner scannerWithString:myString];
 BOOL foundIf = [scanner scanString:@"if" intoString:nil];
 // etc...

答案 1 :(得分:0)

如果您还没有弄明白,以下内容将起作用:

NSString *input = @"if (x>4) then {x = 1}";
NSMutableArray *splitArray = [NSMutableArray array];    
NSCharacterSet *specialChars = [NSCharacterSet characterSetWithCharactersInString:@"(){}[]<>{}="];    
NSScanner *scanner = [NSScanner scannerWithString:input];    
while (![scanner isAtEnd])
{
    NSString *buffer;
    if ([scanner scanCharactersFromSet:[NSCharacterSet alphanumericCharacterSet] intoString:&buffer])
    {
        [splitArray addObject:buffer];            
    }
    else if ([scanner scanCharactersFromSet:specialChars intoString:&buffer])
    {
        [splitArray addObject:buffer];            
    }
    else 
    {
        [scanner setScanLocation:[scanner scanLocation] + 1];
    }
}    
NSLog(@"%@", splitArray);

您可以在specialChars中添加您想要的任何字符。

PS:我今天第一次阅读有关NSScanner的内容,这是一个很好的练习,可以真实地使用它!我建议你仔细阅读https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Strings/Articles/Scanners.html