Удалить пунктуацию из NSMutableArray - PullRequest
0 голосов
/ 26 мая 2011

Как удалить знаки препинания типа "," из NSMutableArray?

Ответы [ 2 ]

3 голосов
/ 26 мая 2011

В вашем массиве или элементах массива нет запятых.Когда вы используете NSLog() для записи массива, он использует формат NeXTSTEP, в котором говорится, что круглые скобки используются для разделения массива, а запятые используются для разделения элементов.

Так что если

NSLog(@"%@", myarray);

выводит

( 006d, 0081, 006d, 007f )

это означает, что массив содержит @ "006d" в первой позиции, @ "0081" во второй позиции, "006d" в третьей позиции и @ "007f" вчетвертая позиция.

Запятые (и круглые скобки) являются только частью представления массива для вывода;они не являются частью массива / элементов массива как таковых.

Вместо использования NSLog() вы можете использовать следующий фрагмент кода для вывода вашего массива:

NSLog(@"beginning of array");
for (id element in myarray) NSLog(@"%@", element);
NSLog(@"end of array");

, который будетвыведите что-то вроде:

beginning of array
006d
0081
006d
007f
end of array

Редактирование на основе комментария: Похоже, вы хотите объединить элементы массива.Попробуйте это:

NSString *allElements = [myarray componentsJoinedByString:@""];

-[NSArray componentsJoinedByString:], как говорит название метода, объединяет все элементы в массиве, разделяя их строкой.Если вы используете @"" в качестве разделительной строки, элементы будут соединяться один за другим.

Если вы хотите вывести эту строку:

NSLog(@"%@", allElements);
1 голос
/ 26 мая 2011

Предполагая, что элементы массива являются строками, содержащими шестнадцатеричные числа, разделенные запятыми, следующий код создает еще один NSMutableArray с удаленными символами, кроме буквенно-цифровых символов.

NSMutableArray *array = [NSMutableArray arrayWithObject:@"2f,40d,67f"];
for (int i = 0; i < [array count]; i++) {
    NSString *element = [array objectAtIndex:i];
    NSMutableString *result = [NSMutableString stringWithCapacity:element.length];
    NSScanner *scanner = [NSScanner scannerWithString:element];  
    NSCharacterSet *allowed = [NSCharacterSet alphanumericCharacterSet];  
    while ([scanner isAtEnd] == NO) {  
        NSString *buffer;  
        if ([scanner scanCharactersFromSet:allowed intoString:&buffer]) {  
            [result appendString:buffer]; 
        } else {        
            [scanner setScanLocation:([scanner scanLocation] + 1)];  
        }  
    }
    [array replaceObjectAtIndex:i withObject:result];
}
NSLog(@"array %@", array);

Это печатает 2f40d67f, но выглядит как множествоработать, чтобы сделать что-то так просто.: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...