私のforループは、私が求めていることをしていないようです。スペースと等しくない場合はカウントを実行しようとしていますが、スペースと等しい場合はオブジェクトを削除しようとしています。私の NSLOG は、まだスペースをカウントしており、それらを削除していないことを示しているため、どちらも機能していないようです。どんな助けでも大歓迎です。
NSMutableArray *a1 = [[NSMutableArray alloc] init];
// Take address and break into array by colon
if ([str rangeOfString:@"::"].location == NSNotFound)
{
NSLog(@"Double Colon not found");
}
else
{
a1 = [[display.text componentsSeparatedByString:@":"]mutableCopy];
//Separate string by colon
NSLog(@"Separated string by colon: %@",a1);
//count non blank segments
for (item in a1) {
if (item != @""){
numofSeg = numofSeg + 1;
needSeg = 8 - numofSeg;
NSLog(@"%d",needSeg);
}
}
while (needSeg > 0) {
NSUInteger index = [a1 indexOfObject:@""];
if (index != NSNotFound) {
[a1 insertObject:@"0000" atIndex:index];
needSeg = needSeg - 1;
}
}
for (item in a1) {
if (item == @"") {
//remove blank spaces from list
[a1 removeObject:item];
}
}
}
//Join objects back into a string separted by colon.
NSString *join = [a1 componentsJoinedByString:@":"];
NSLog(@"Join array into String: %@",join);
以下に出力します。アレイを再び結合すると、セグメントは 8 つになるはずですが、表示されるのは 6 つだけです。それは、二重コロンを区切ったときから 2 つのスペースを数えていることを示しています。
2012-10-01 19:50:52.430 IPv6[1287:c07] Separated string by colon: (
2002,
0000,
"",
""
)
2012-10-01 19:50:52.432 IPv6[1287:c07] 7
2012-10-01 19:50:52.433 IPv6[1287:c07] 6
2012-10-01 19:50:52.434 IPv6[1287:c07] 5
2012-10-01 19:50:52.435 IPv6[1287:c07] 4
2012-10-01 19:50:52.435 IPv6[1287:c07] Join array into String: 2002:0000:0000:0000:0000:0000::