Почему whitespaceAndNewlineCharacterSet не удаляет пробелы? - PullRequest
4 голосов
/ 14 декабря 2011

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

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 ]

11 голосов
/ 14 декабря 2011

Попробуйте это

NSCharacterSet *dontWantChar = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *string = [[self.textView.text componentsSeparatedByCharactersInSet:dontWantChar] componentsJoinedByString:@""];
2 голосов
/ 14 декабря 2011

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

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

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

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

[s replaceOccurrencesOfString: @" " withString: @"" options: NSBackwardsSearch range: NSMakeRange( 0, [s length] )];
...