2011-01-10 23 views
64

我有幾個字符串。有些在開始時有空白,有些則沒有。我想檢查一個字符串是否以空格開頭,如果是的話刪除它。在Objective-C中刪除字符串中的空格

+0

有點搜索不會傷害。看看[在Cocoa Touch中修改字符串空白的最佳方法是什麼?](http://stackoverflow.com/questions/474270/whats-the-best-way-to-trim-whitespace-from-a -string合可可觸摸) – Abizern 2011-01-10 10:25:53

回答

192

在NSString類中有這樣的方法。檢查stringByTrimmingCharactersInSet:(NSCharacterSet *)set。您應該使用[NSCharacterSet whitespaceCharacterSet]作爲參數:

NSString *foo = @" untrimmed string "; 
NSString *trimmed = [foo stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
+4

這也將修剪尾隨空白(其可以是或不是期望的。(原來的問題詢問只是從開始除去它)。 – lnafziger 2013-05-25 04:12:30

+0

`stringByTrimmingCharactersInSet`只從一開始就去除的字符和的字符串,而不是在中間的那些結束對於那些誰試圖在一個字符串中間,使用`[yourString stringByReplacingOccurrencesOfString:@「‘withString:@’」]刪除空間。` – 2017-05-02 08:45:22

65

你可以使用stringByTrimmingCharactersInSet NSString方法與whitespaceAndNewlineCharacterSet NSCharacterSet這樣:

NSString *testString = @" Eek! There are leading and trailing spaces "; 
NSString *trimmedString = [testString stringByTrimmingCharactersInSet: 
          [NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
+2

+1推薦在whitespaceAndNewlineCharacterSet而不僅僅是whitespaceCharacterSet。 – 2012-03-22 22:58:54

6

這將只刪除前導空格。

NSString *myString = @" 123 "; 
NSLog(@"mystring %@, length %d",myString, myString.length); 
NSRange range = [myString rangeOfString:@"^\\s*" options:NSRegularExpressionSearch]; 
myString = [myString stringByReplacingCharactersInRange:range withString:@""]; 
NSLog(@"mystring %@, length %d",myString, myString.length); 

輸出

mystring 123 , length 9 
mystring 123 , length 6 
5

我寫了一個快速宏來減少需要寫入的代碼量。

第1步:修改應用程式的PCH文件,這應該被命名爲項目名 - Prefix.pch

#define TRIM(string) [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] 

第2步:享受寫作的方式更少的代碼,當你要修剪的字符串

NSLog(@"Output: %@ %@", TRIM(@"Hello  "), TRIM(@"World  ")); 

Output: Hello World