какао:NSString не удаляет все символы
Вопрос
У меня есть int, и по какой-то причине он не работает после 16 или около того.Вот мой код:
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++;
}
Редактировать:Это не int, это строка stringWithoutSpaces...Я не могу понять, чем это вызвано.
Таким образом, это (NSLog, см. Выше z ++) выглядит следующим образом:
"Здесь"
"неважно"
"17 что бы там ни было"
"18 это"
и т.д.
Решение
Я предполагаю, что это связано с вашим предыдущим вопросом Сортировка NSArray по значению int, содержащемуся в массиве, и что вы пытаетесь удалить начальный номер и пробел из массива , который выглядит так , как тот , который у вас был в этом вопросе:
"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"
Не зная полных входных данных, я бы предположил, что ваш код, скорее всего, терпит неудачу, потому что начальные цифры и значение z
выходят из синхронизации.Поскольку вам, похоже, на самом деле все равно, что такое начальный номер, и вы просто хотите его выбрать, я бы порекомендовал другой подход, который сканирует на наличие начальных цифр и извлекает подстроку из позиции, где заканчиваются эти цифры:
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
// )
)