簡體   English   中英

在Cocoa Touch中從字符串中修剪空白的最佳方法是什么?

[英]What's the best way to trim whitespace from a string in Cocoa Touch?

我想確定用戶輸入(UITextField)中的字符串值是否為“空白”(如果它不是nil)。 檢查[textField.text isEqualToString:""]是否還不夠,因為我想避免任何空白/空格輸入(比如說幾個空格字符)。

在這篇StOv帖子中,似乎有一個很好的解決方案可以解決我的特定問題。

基本上它是這樣的,但我懷疑必須(或應該)是一個更好的方法:

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搞砸了,但是必須有一個嘗試過的真正的習慣用於修剪Cocoa中的字符串。

Aaaand答案已經在那里了,我道歉:

NSString的-stringByTrimmingCharactersInSet:會這樣做:

返回通過從接收器的兩端移除給定字符集中包含的字符而生成的新字符串。

我仍然很想知道是否有人有其他/首選方式這樣做。

你正在使用whitespaceAndNewlineCharacterSet,不錯。 但是為什么不使用stringByTrimmingCharactersInSet而不是使用scanUpToCharactersFromSet? 像這樣......

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

編輯:沒有意識到你已經發現了stringByTrimmingCharactersInSet,直到我發布這個。

你在尋找什么

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

刪除字符串中間的空格不稱為“修剪”。

根據定義修剪從邊緣開始。

為了使自己更容易,而不是創建一個子類,您可以修改現有的Apple類並執行類似的操作

//
// 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM