2011-12-14 3 views
4

Этот код следует очистить номер телефона, но он не делает:Почему 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 

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

ответ

11

Попробуйте

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

Отлично, спасибо! Нашел другое решение, но ваш ответ был верным для вопроса :) – JOM

2

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

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

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

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

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

документацию, какие документы? Не используется для работы в документальных средах ... так что очень ценю подсказку! – JOM

+0

Вы найдете http://developer.apple.com/iphone - очень прекрасный ресурс. И я связал документацию для 'stringByTrimmingCharactersInSet' для вас там. –