目标C:在双引号之间获取子串

时间:2012-05-21 04:15:23

标签: objective-c ios xcode nsstring substring

在双引号之间获取每个子字符串并将其变为数组的最佳方法是什么?

例如,如果字符串(NSString)是:

@"abcd \"efgh\" ijklm \"no\" p \"qrst\" uvwx \"y\" z"

我希望结果是:

{@"efgh", @"no", @"qrst", @"y"}

作为NSArray。

2 个答案:

答案 0 :(得分:6)

这应该让你开始:

NSString *str = @"abcd \"efgh\" ijklm \"no\" p \"qrst\" uvwx \"y\" z";
NSMutableArray *target = [NSMutableArray array];
NSScanner *scanner = [NSScanner scannerWithString:str];
NSString *tmp;

while ([scanner isAtEnd] == NO)
{
    [scanner scanUpToString:@"\"" intoString:NULL];
    [scanner scanString:@"\"" intoString:NULL];
    [scanner scanUpToString:@"\"" intoString:&tmp];
    if ([scanner isAtEnd] == NO)
        [target addObject:tmp];
    [scanner scanString:@"\"" intoString:NULL];
}

for (NSString *item in target)
{
    NSLog(@"%@", item);
}

答案 1 :(得分:4)

一种方法是使用componentsSeparatedByString:根据"拆分它们。这应该给你一个单词数组,其数量应该是奇数。将所有偶数编号的单词过滤为数组。这应该是你想要的数组。

或者看看NSPredicate