如何将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转换为数字,并将它们插入到数组中。