web-dev-qa-db-ja.com

NSStringを同じセパレーターで複数回分割します

現在、次のような文字列を受け取っています。

@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54"

そして、私はこれを次のように分割しています:

testArray = [[NSArray alloc] init];
NSString *testString = [[NSString alloc] initWithFormat:@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54,Steve|56,Matty|24,Bill|30,Rob|30,Jason|33,Mark|22,Stuart|54,Kevin|30"];
testArray = [testString componentsSeparatedByString:@","];

dict = [NSMutableDictionary dictionary];
for (NSString *s in testArray) {

    testArray2 = [s componentsSeparatedByString:@"|"];
    [dict setObject:[testArray2 objectAtIndex:1] forKey:[testArray2 objectAtIndex:0]];
}

次のような文字列を受け取ります。

@"Sam|26|Developer,Hannah|22|Team Leader,Adam|30|Director,Carlie|32|PA,Jan|54|Cleaner"

「|」を使用して文字列を複数回分離するために上記と同じ方法を使用できますか(および方法)セパレータ?

72
Sam Parrish

次の行...

testArray2 = [s componentsSeparatedByString:@"|"];

これにより、配列には2.ではなく3つの項目が含まれるようになります。..再度分割する必要はありません!

166
Simon Lee

このようにします。

NSString *testString = [[NSString alloc] initWithFormat:@"Sam|26,Hannah|22,Adam|30,Carlie|32,Jan|54,Steve|56,Matty|24,Bill|30,Rob|30,Jason|33,Mark|22,Stuart|54,Kevin|30"];
    NSArray *testArray = [testString componentsSeparatedByString:@","];
    NSLog(@"%@",testArray);
    for(int i=0;i<[testArray count];i++){
        NSString *str=[testArray objectAtIndex:i];
    NSArray *aa=[str componentsSeparatedByString:@"|"];
    NSLog(@"%@",aa);
    }

アレイを保持する必要はありません。

4
Tendulkar