如何从NSMutableArray中删除“,”之类的标点?
答案 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