2011-12-14 110 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:@""]; 
2

的文档stringByTrimmingCharactersInSet说:

返回由移除了一个新的字符串两端包含在一个给定的字符集 接收字符

换句话说,它只会从字符串前后的任何有效字符中删除有问题的字符。任何“违规”字符都留在字符串的中间,因为修剪方法不会触及该部分。无论如何,有几种方法可以做你想做的事情(而@ Narayana的回答也很好,对他/她也是+1)。我的解决办法是设置您的字符串s是一个可变的字符串,然后做:

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

文档,哪些文件?不习惯在记录在案的环境中工作...所以真的很感激小费! – JOM 2011-12-14 09:46:33

+0

你会发现http://developer.apple.com/iphone是一个非常非常好的资源。我在那里连接了`stringByTrimmingCharactersInSet`的文档。 – 2011-12-14 09:47:44

相关问题