如何将NSString转换为NSArray

我有一个像

NSString* str = @"[90, 5, 6]"; 

我需要将它转换为一个数组

 NSArray * numbers = [90, 5 , 6]; 

我做了这样一个很长的路:


 +(NSArray *)stringToArray:(NSString *)str
 {
     NSString * sep = @“[,”;
     NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:sep];
     NSArray * temp = [str componentsSeparatedByCharactersInSet:set];

     NSMutableArray * numbers = [[NSMutableArray alloc] init];
     for(NSString * s in temp){
         NSNumber * n = [NSNumber numberWithInteger:[s integerValue]];
         [numbers addObject:n];
     }

    退货号码;
 }

有没有什么干净而快捷的方法来做这样的转换?

谢谢

首先从string中删除不需要的字符,如空格和大括号:

 NSString* str = @"[90, 5, 6]"; NSCharacterSet* characterSet = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789,"] invertedSet]; NSString* newString = [[str componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""]; 

你会有这样的string: 90,5,6 。 然后简单地使用逗号分割并转换为NSNumber

 NSArray* arrayOfStrings = [newString componentsSeparatedByString:@","]; NSMutableArray* arrayOfNumbers = [NSMutableArray arrayWithCapacity:arrayOfStrings.count]; for (NSString* string in arrayOfStrings) { [arrayOfNumbers addObject:[NSDecimalNumber decimalNumberWithString:string]]; } 

使用此响应中的NSString类别,可以将其简化为:

 NSArray* arrayOfStrings = [newString componentsSeparatedByString:@","]; NSArray* arrayOfNumbers = [arrayOfStrings valueForKey: @"decimalNumberValue"]; 
 NSString* str = @"[90, 5, 6]"; NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"[] "]; NSArray *array = [[[str componentsSeparatedByCharactersInSet:characterSet] componentsJoinedByString:@""] componentsSeparatedByString:@","]; 
 NSString *newSTR = [str stringByReplacingOccurrencesOfString:@"[" withString:@""]; newSTR = [newSTR stringByReplacingOccurrencesOfString:@"]" withString:@""]; NSArray *items = [newSTR componentsSeparatedByString:@","]; 

像这样尝试

 NSArray *arr = [string componentsSeparatedByString:@","]; 

你可以使用正则expression式来实现

([0-9] +)

 NSError* error = nil; NSString* str = @"[90, 5, 6]"; NSRegularExpression* regex = [NSRegularExpression regularExpressionWithPattern:@"([0-9]+)" options:0 error:&error]; NSArray* matches = [regex matchesInString:str options:0 range:NSMakeRange(0, [str length])]; 

然后你有一个NSArray的string,你只需要迭代它,并将string转换为数字,并将它们插入到数组中。