2009-12-09 4 views
-1

J'ai un int et pour une raison quelconque, il ne fonctionne pas après 16 ou plus. Voici mon code:cacao: NSString ne pas supprimer tous les caractères

NSArray *sortedArray; 
sortedArray = [doesntContainAnother sortedArrayUsingFunction:firstNumSort context:NULL]; 

int count2 = [sortedArray count]; 
//NSLog(@"%d", count2); 
int z = 0; 
while (z < count2) { 
    NSString *myString = [sortedArray objectAtIndex:z]; 
    NSString *intstring = [NSString stringWithFormat:@"%d", z]; 
    NSString *stringWithoutSpaces; 
    stringWithoutSpaces = [[myString stringByReplacingOccurrencesOfString:intstring 
                   withString:@""] mutableCopy]; 
    [hopefulfinal addObject:stringWithoutSpaces]; 
    NSLog(@"%@", [hopefulfinal objectAtIndex:z]); 
    z++; 
} 

Edit: Ce n'est pas int, c'est la ligne stringWithoutSpaces ... Je ne peux pas comprendre ce qui en est la cause.

Il (le NSLog, voir ci-dessus z ++) ressemble à ceci:

"Ici"

"whatever"

"17 whatevere"

"18 cette"

etc.

+0

Peut-être que vous pourriez nous dire ce que vous avez (vos données d'entrée) et qu'essayez-vous d'atteindre. – stefanB

+0

D'après ma compréhension de votre code, vous traduisez le caractère en une valeur ASCII, alors je ne suis pas sûr de ce que vous remplacez car la ligne n'est pas complète. – stefanB

+0

Pourquoi faites-vous une copie mutable? Vous ne mutez pas la chaîne. De plus, vous le fuyez. –

Répondre

2

Je suppose que ceci est lié à votre plus tôt question Sort NSArray’s by an int contained in the array, et que vous essayez de dépouiller le nombre de premier plan et des espaces d'un tableau qui ressemble à celui que vous aviez en cette question:

"0 Here is an object" 
"1 What the heck, here's another!" 
"2 Let's put 2 here too!" 
"3 Let's put this one right here" 
"4 Here's another object" 

Sans connaître l'entrée complète, je suppose que votre code échoue probablement parce que les nombres premiers et la valeur de z ne sont plus synchronisés. Puisque vous ne semblez pas vous préoccuper du nombre principal et que vous voulez juste le vômer, je vous recommande une approche différente qui scanne les chiffres initiaux et extrait la sous-chaîne de la position où ces chiffres se terminent:

NSArray *array = [NSArray arrayWithObjects:@"1 One", 
              @"2 Two", 
              @"5 Five", 
              @"17 Seventeen", 
              nil]; 

NSMutableArray *results = [NSMutableArray array]; 
NSScanner *scanner; 
NSCharacterSet *whitespace = [NSCharacterSet whitespaceCharacterSet]; 

for (NSString *item in array) { 
    scanner = [NSScanner scannerWithString:item]; 
    [scanner scanInteger:NULL]; // throwing away the BOOL return value... 
           // if string does not start with a number, 
           // the scanLocation will be 0, which is good. 
    [results addObject:[[item substringFromIndex:[scanner scanLocation]] 
         stringByTrimmingCharactersInSet:whitespace]]; 
} 

NSLog(@"Resulting array is: %@", results); 

// Resulting array is: (
// One, 
// Two, 
// Five, 
// Seventeen 
//) 

)

+0

merci, cela fonctionne parfaitement ~~~~~ –

Questions connexes