Objective-C удаляет пробелы из строк в массиве - PullRequest
4 голосов
/ 07 июля 2011

Я хочу импортировать файл строк строка за строкой в ​​массив. Я хочу избавиться от всех пробелов до и после строк, чтобы можно было намного проще сравнивать строки без их несоответствия из-за небольших несоответствий пробелов. Я NSData содержимое файлов затем взять две строки

NSString* string  = [[[NSString alloc] initWithBytes:[data bytes]
                                                  length:[data length] 
                                                encoding:NSUTF8StringEncoding] autorelease];

NSString* string2  = [[[NSString alloc] initWithBytes:[data2 bytes]
                                                   length:[data2 length] 
                                                 encoding:NSUTF8StringEncoding] autorelease];

Ниже я попытался удалить пробелы перед добавлением в массив, но, похоже, он не работает.

NSString *newString = [string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];
NSString *newString2 = [string2 stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]];

NSArray *fileInput = [newString componentsSeparatedByString:@"\n"];
NSArray *fileInput2 = [newString2 componentsSeparatedByString:@"\n"];

Ответы [ 3 ]

6 голосов
/ 07 июля 2011

Если вы хотите заменить все вхождения пробела, использование stringByTrimmingCharactersInSet: не поможет, поскольку оно обрезается только в начале и конце строки.Вам нужно будет использовать метод stringByReplacingOccurrencesOfString:withString: для устранения пробелов.

NSString * newString = [string stringByReplacingOccurrencesOfString:@" " withString:@""];
NSString * newString2 = [string2 stringByReplacingOccurrencesOfString:@" " withString:@""];

Однако,

Если вы хотите обрезать все строки в массиве, товам нужно будет перечислить массив и добавить обрезанные строки в новый изменяемый массив.

1 голос
/ 07 июля 2011

И @Deepak, и @Bill Dudney правы, я просто предлагаю другой способ решения вашей проблемы:

NSMutableArray *fileInput = [NSMutableArray array];

[string enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
    if ([line length] > 0) {
        [fileInput addObject:
            [line stringByTrimmingCharactersInSet:
                [NSCharacterSet whitespaceCharacterSet]];
    }
}];

(Отказ от ответственности: Работает только в iOS 4+, OS X 10.6+... но я люблю блоки! :))

1 голос
/ 07 июля 2011

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

NSArray *fileInput2 = [newString2 componentsSeparatedByString:@"\n"];
NSMutableArray *trimmedFileInput2 = [NSMutableArray array];
for(NSString *gak in fileInput2) {
    [trimmedFileInput2 addObject:[gak stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
}

[Спасибо @Deepak за комментарий, черт!]

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