为什么whitespaceAndNewlineCharacterSet不删除空格?

时间:2011-12-14 09:34:03

标签: iphone uitextview nscharacterset

此代码应该清理电话号码,但不会:

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 个答案:

答案 0 :(得分:11)

试试这个

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

答案 1 :(得分:2)

stringByTrimmingCharactersInSet的文档说:

  

返回从两端中删除的新字符串   包含在给定字符集中的接收者字符。

换句话说,它只删除字符串前后任何有效字符的违规字符。任何“违规”字符都留在字符串的中间,因为修剪方法不会触及该部分。

无论如何,有几种方法可以做你想要做的事情(@ Narayana的答案也很好,对他/她来说也是+1)。我的解决方案是将字符串s设置为可变字符串,然后执行:

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