2009-01-23 57 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 
相關問題