2011-07-07 32 views
4

我想將字符串文件逐行地導入到數組中。我想擺脫字符串前後的所有空白,這樣我可以比較更容易的字符串,而不會因爲空白的小的差異而不匹配。我的NSData的文件的內容,然後取這兩個字符串Objective-C從數組中的字符串中刪除空格

NSString* string = [[[NSString alloc] initWithBytes:[data bytes] 
                length:[data length] 
               encoding:NSUTF8StringEncoding] autorelease]; 

NSString* string2 = [[[NSString alloc] initWithBytes:[data2 bytes] 
                length:[data2 length] 
               encoding:NSUTF8StringEncoding] autorelease]; 

我下面嘗試添加到陣列之前刪除空格,但它似乎並沒有工作。

NSString *newString = [string stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; 
NSString *newString2 = [string2 stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceCharacterSet]]; 

NSArray *fileInput = [newString componentsSeparatedByString:@"\n"]; 
NSArray *fileInput2 = [newString2 componentsSeparatedByString:@"\n"]; 

回答

1

在我看來像要刪除從每行前和整個文件的後面而不是空白。嘗試這樣的事情;

NSArray *fileInput2 = [newString2 componentsSeparatedByString:@"\n"]; 
NSMutableArray *trimmedFileInput2 = [NSMutableArray array]; 
for(NSString *gak in fileInput2) { 
    [trimmedFileInput2 addObject:[gak stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
} 

[感謝@Deepak的評論,戶外數字!]

+0

它不會取代現有的對象,會嗎? –

6

如果你正在尋找替代空格的所有匹配,然後使用stringByTrimmingCharactersInSet:不會幫助,因爲它只有在開始和結束剪掉字符串。您將需要使用stringByReplacingOccurrencesOfString:withString:方法來消除空白。

NSString * newString = [string stringByReplacingOccurrencesOfString:@" " withString:@""]; 
NSString * newString2 = [string2 stringByReplacingOccurrencesOfString:@" " withString:@""]; 

然而,

如果要修剪的陣列中的所有字符串,那麼你將不得不枚舉陣列和可變的新陣列添加修剪字符串。

+0

+1提到stringByTrimmingCharactersInSet:在這種情況下不會幫助 – Jasper

2

兩個@Deepak和@Bill Dudney是正確的,我只是扔在另一種方式來解決問題:

NSMutableArray *fileInput = [NSMutableArray array]; 

[string enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) { 
    if ([line length] > 0) { 
     [fileInput addObject: 
      [line stringByTrimmingCharactersInSet: 
       [NSCharacterSet whitespaceCharacterSet]]; 
    } 
}]; 

(免責聲明:工程在iOS 4以上,僅OS X 10.6以上版本..但我喜歡塊!:))