2009-01-23 56 views
23

我正在寻找确定如果它不是零,来自用户输入(UITextField)的字符串值是否为“空白”。检查[textField.text isEqualToString:""]是否不够好,因为我想避免任何空白/空白输入(如说一些空格字符)。什么是修剪Cocoa Touch中字符串空白的最佳方法?

似乎有迹象表明我的特殊问题in this StOv post有一个很好的解决方案。

基本上它是这样的,但我怀疑,必须有(或应该)是一个更好的办法:

NSString *strResult; 
NSScanner* scanner = [NSScanner scannerWithString:textField.text]; 
BOOL hasValidChars = [scanner scanUpToCharactersFromSet:[NSCharacterSet whitespaceAndNewlineCharacterSet] 
              intoString:&strResult]; 

// if hasValidChars == YES, we've got nonwhite space chars collected into strResult 

这显然只适用于我的特殊情况,而且即便如此,它会失败,如果第一个角色是一个空间,但我希望遵循的数据。所以,我意识到我被Ruby所宠坏了,但在可可中修剪字符串必须有一个可靠和真实的习惯用法。

Aaaand的答案已经摆在那里,我的道歉:

的NSString的-stringByTrimmingCharactersInSet:会做到这一点:

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

我仍然好奇听到有人有这样做的其他/首选方法。

+0

string.length减> 0 – elliotrock 2015-04-04 17:04:00

回答

48

您正在使用whitespaceAndNewlineCharacterSet,很好。但是,而不是使用scanUpToCharactersFromSet,为什么不使用stringByTrimmingCharactersInSet?像这样的东西...

strResult = [strResult stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 

编辑:没有意识到你已经找到stringByTrimmingCharactersInSet直到我发布了这个。

+1

无后顾之忧,一个人应该得到的答案信贷,我会觉得自己像一个工具张贴自己;-) – 2009-01-23 20:31:50

13

你所寻找的是

[string stringByReplacingOccurrencesOfString:@" " withString:@""]

删除字符串中间的空格不称为“修整”。

根据定义的修剪从边缘开始工作。

2

为了使这个简单的自己,而不是使一个子类,您可以修改现有的苹果类和做类似

// 
// NSString+MyExtensions.h 
// 

@interface NSString (MyExtensions) 

- (NSString *)trimmed; 

@end 

和实施

// 
// NSString+MyExtensions.m 
// 

#import "NSString+MyExtensions.h" 

@implementation NSString (MyExtensions) 

- (NSString *)trimmed { 
    return [self stringByTrimmingCharactersInSet: 
      [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
} 

@end 

所以,现在任何地方你应用程序,你使用NSString
你现在可以打电话[@" hello world " trimmed]像下面

// 
// ViewController.m 
// 

#import "NSString+MyExtensions.h" 

@implementation ViewController 

- (void)viewDidLoad { 

    NSString *string = @"  This is a string "; 

    NSLog(@"The original string: %@ \n The trimmed string: %@\n\n", 
      string, 
      [string trimmed]); 

    string = @"     "; 

    if([string trimmed].length == 0) 
     NSLog(@"%@", @"String is empty! :O"); 

} 

@end 

这将打印出

The original string:  This is a string  
The trimmed string: This is a string 

String is empty! :O 
相关问题