问题描述
|
如何从NSMutableArray中删除标点符号,例如\“,\”?
解决方法
您的数组或数组元素中没有逗号。当您使用“ 0”记录数组时,它使用NeXTSTEP格式,该格式指出括号用于定界数组,逗号用于定界元素。
因此,如果
NSLog(@\"%@\",myarray);
输出
( 006d,0081,006d,007f )
这意味着该数组在第一个位置包含@ \“ 006d \”,在第二个位置包含@ \“ 0081 \”,在第三位置包含\“ 006d \”,在第四位置包含@ \“ 007f \”。
逗号(和括号)只是用于输出的数组表示的一部分;它们本身不是数组/数组元素的一部分。
除了使用ѭ0之外,您还可以使用以下代码片段输出数组:
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:@\"\"];
method7ѭ,如方法名称所示,将数组中的所有元素连接在一起,并用字符串将它们分隔开。如果使用“ 8”作为分隔字符串,则元素将一个接一个地连接在一起。
如果要输出该字符串:
NSLog(@\"%@\",allElements);
,假设数组的元素是包含逗号分隔的十六进制数字的字符串,则以下代码将生成另一个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