在双引号之间获取每个子字符串并将其变为数组的最佳方法是什么?
例如,如果字符串(NSString)是:
@"abcd \"efgh\" ijklm \"no\" p \"qrst\" uvwx \"y\" z"
我希望结果是:
{@"efgh", @"no", @"qrst", @"y"}
作为NSArray。
答案 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
。