从NSMutableArray中删除标点符号

时间:2011-05-26 13:39:08

标签: iphone objective-c ios4

如何从NSMutableArray中删除“,”之类的标点?

2 个答案:

答案 0 :(得分:3)

您的数组或数组元素中没有逗号。当您使用NSLog()来记录数组时,它使用NeXTSTEP格式,该格式指出括号用于分隔数组,而逗号用于分隔元素。

所以,如果

NSLog(@"%@", myarray);

输出

( 006d, 0081, 006d, 007f )

这意味着数组在第一个位置包含@“006d”,在第二个位置包含@“0081”,在第三个位置包含“006d”,在第四个位置包含@“007f”。

逗号(和括号)只是输出数组表示的一部分;它们本身不是数组/数组元素的一部分。

您可以使用以下代码段输出数组,而不是使用NSLog()

NSLog(@"beginning of array");
for (id element in myarray) NSLog(@"%@", element);
NSLog(@"end of array");

将输出如下内容:

beginning of array
006d
0081
006d
007f
end of array

根据评论进行修改:您希望加入数组元素。试试这个:

NSString *allElements = [myarray componentsJoinedByString:@""];
正如方法名称所示,

-[NSArray componentsJoinedByString:]连接数组中的所有元素,用字符串分隔它们。如果使用@""作为分隔字符串,则元素将一个接一个地连接。

如果要输出该字符串:

NSLog(@"%@", allElements);

答案 1 :(得分:1)

假设数组的元素是包含逗号分隔的十六进制数字的字符串,则下面会生成另一个NSMutableArray,其中包含除字母数字字符之外的任何内容。

NSMutableArray *array = [NSMutableArray arrayWithObject:@"2f,40d,67f"];
for (int i = 0; i < [array count]; i++) {
    NSString *element = [array objectAtIndex:i];
    NSMutableString *result = [NSMutableString stringWithCapacity:element.length];
    NSScanner *scanner = [NSScanner scannerWithString:element];  
    NSCharacterSet *allowed = [NSCharacterSet alphanumericCharacterSet];  
    while ([scanner isAtEnd] == NO) {  
        NSString *buffer;  
        if ([scanner scanCharactersFromSet:allowed intoString:&buffer]) {  
            [result appendString:buffer]; 
        } else {        
            [scanner setScanLocation:([scanner scanLocation] + 1)];  
        }  
    }
    [array replaceObjectAtIndex:i withObject:result];
}
NSLog(@"array %@", array);

这会打印2f40d67f但看起来做很多工作就很简单了。 :P