2011-07-07 22 views
4

文字列のファイルを行単位で配列にインポートします。文字列の前と後のすべての空白を取り除き、空白の相違が小さいため文字列をずっと簡単に比較することができます。私はその後、私は、アレイに追加する前に空白文字を削除するには、以下を試みたが、動作するようには思えない二つの文字列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]; 

を取るファイルの内容をNSDataの。

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コメント、DOOH!]

+0

それは既存のオブジェクトを置き換えませんでしょうか? –

6

をあなたはそれが唯一の開始と終了の時にオフトリムとして役立つことはありませんstringByTrimmingCharactersInSet:を使用して空白のすべての出現を置き換えて見ている場合文字列空白を削除するには、stringByReplacingOccurrencesOfString:withString:メソッドを使用する必要があります。

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

あなたは、アレイ内のすべての文字列をトリミングしたい場合はしかし、

は、あなたは、配列を列挙し、新しい可変配列でトリミングされた文字列を追加する必要があります。

+0

stringByTrimmingCharactersInSetに言及するための+1:この場合ヘルプはありません – 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以降のみを..私はブロックが大好きです:))

関連する問題