Objective-C从数组中的字符串中删除空格

时间:2011-07-07 17:27:40

标签: objective-c

我想逐行将字符串文件导入数组。我想摆脱字符串前后的所有空格,以便我可以更容易地比较字符串而不会因为小的空白差异而使它们不匹配。我NSData文件的内容然后采取两个字符串

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"];

3 个答案:

答案 0 :(得分:6)

如果您正在考虑替换所有出现的空格,那么使用stringByTrimmingCharactersInSet:将无济于事,因为它只会在字符串的开头和结尾处进行修剪。您需要使用stringByReplacingOccurrencesOfString:withString:方法来消除空格。

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

<强>然而,

如果要修剪数组中的所有字符串,则必须枚举数组并在新的可变数组中添加修剪后的字符串。

答案 1 :(得分:1)

在我看来,你要从整个文件的正面和背面移除空白区域,而不是从每一行移除。试试这样的事情;

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

[感谢@Deepak的评论,dooh!]

答案 2 :(得分:1)

@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+ ......但我喜欢封锁!:))