Почему whitespaceAndNewlineCharacterSet не удаляет пробелы?

Этот код ДОЛЖЕН очистить номер телефона, но он не:

NSLog(@"%@", self.textView.text);
// Output +358 40 111 1111
NSString *s = [self.textView.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"%@", s);
// Output +358 40 111 1111

Есть идеи, что не так? Любые другие способы удалить белые символы из текстовой строки (кроме сложного способа)?

2 ответа

Решение

Попробуй это

NSCharacterSet *dontWantChar = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *string = [[self.textView.text componentsSeparatedByCharactersInSet:dontWantChar] componentsJoinedByString:@""];

Документация для stringByTrimmingCharactersInSet говорит:

Возвращает новую строку, созданную удалением с обоих концов символов получателя, содержащихся в данном наборе символов.

Другими словами, он удаляет только оскорбительные символы до и после строки любых допустимых символов. Любые "оскорбительные" символы остаются в середине строки, потому что метод обрезки не касается этой части.

В любом случае, есть несколько способов сделать то, что вы пытаетесь сделать (и ответ @Narayana тоже хорош в этом вопросе... +1 ему / ей). Мое решение было бы установить вашу строку s чтобы быть изменяемой строкой, а затем выполните:

[s replaceOccurrencesOfString: @" " withString: @"" options: NSBackwardsSearch range: NSMakeRange( 0, [s length] )];
Другие вопросы по тегам