二重引用符の間のすべての部分文字列を取得して配列にする最良の方法は何でしょうか?
たとえば、文字列 (NSString) が次の場合:
@"abcd \"efgh\" ijklm \"no\" p \"qrst\" uvwx \"y\" z"
結果を次のようにしたい:
{@"efgh", @"no", @"qrst", @"y"}
NSArray として。
二重引用符の間のすべての部分文字列を取得して配列にする最良の方法は何でしょうか?
たとえば、文字列 (NSString) が次の場合:
@"abcd \"efgh\" ijklm \"no\" p \"qrst\" uvwx \"y\" z"
結果を次のようにしたい:
{@"efgh", @"no", @"qrst", @"y"}
NSArray として。
これで始められるはずです:
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 つの方法は、 にcomponentsSeparatedByString:
基づいてそれらを分割するために使用すること"
です。これにより、カウントが奇数である単語の配列が得られるはずです。偶数番号のすべての単語を配列にフィルター処理します。これは目的の配列である必要があります。
あるいは、 を見てくださいNSPredicate
。