0

配列の各要素が @"key is 1::value is 1" に等しい形式を持つ NSStrings の NSMutableArray があります。ここで、「::」の前の文字列部分を array1 に格納し、「::」の後の文字列部分を array2 に格納します。どうやってやるの?

4

5 に答える 5

0

コードは次のとおりです。

NSArray *temp = [YourString componentsSeparatedByString:@"::"];
NSString *str1 = [temp objectAtIndex:0];
NSString *str2 = [temp objectAtIndex:1];

ただし、配列内のオブジェクトにアクセスする前に、値が含まれているかどうかを確認してください。

于 2013-01-23T04:24:43.703 に答える
0

これを使って:

[array1 addObject:[[YourString componentsSeparatedByString:@"::"] objectAtIndex:0]];
[array2 addObject:[[YourString componentsSeparatedByString:@"::"] objectAtIndex:1]];
于 2013-01-23T04:25:12.260 に答える
0

これを試して ::

NSString *s = @"key is 1::value is 1";

NSArray *a = [s componentsSeparatedByString:@"::"];

NSLog(@" -> %@ --> %@", [a objectAtIndex:0], [a objectAtIndex:1]);
于 2013-01-23T04:27:20.187 に答える
0

文字列を分割するための鍵は、 NSString でcomponentsSeparatedByString:メソッドを使用して、文字列を NSArray に分割することです。このメソッドが空の文字列などでどのように機能するかについてのドキュメントを読んでください。

文字列の配列があると言ったので、基本的な実装では、その配列を反復処理し、各要素を他の 2 つの配列に追加する必要があります。

NSMutableArray *arrayOfStrings = [NSMutableArray array];
NSMutableArray *array1 = [NSMutableArray array];
NSMutableArray *array2 = [NSMutableArray array];

for (NSString *string in arrayOfStrings)
{
    NSArray *components = [string componentsSeparatedByString:@"::"];
    if ([components count] == 2)
    {
        NSString *obj1 = [components objectAtIndex:0];
        NSString *obj2 = [components objectAtIndex:1];
        [array1 addObject:obj1];
        [array2 addObject:obj2];
    }
}
于 2013-01-23T04:21:06.760 に答える
0

私は道を見つけました。元の配列の要素を反復しながら、それぞれ array1 と array 2 に beforeString と afterString を追加し続けます

for(int i=0;i<self.originalArray.count;i++)
    {
      NSString *temp=[self.originalArray objectAtIndex:i];

        NSRange r = [temp rangeOfString:@"::"];
        NSString *beforeString = [temp substringToIndex:r.location];
        NSString *afterString = [temp substringFromIndex:r.location+2];

        [array1 addObject:beforeString];  
        [array2 addObject:afterString];  
     }
于 2013-01-23T04:42:30.680 に答える