我有一个像
这样的字符串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]; } return numbers; }
有没有任何简洁快捷的方式进行此类转换?
由于
答案 0 :(得分:12)
首先从字符串中删除不需要的字符,如空格和大括号:
NSString* str = @"[90, 5, 6]";
NSCharacterSet* characterSet = [[NSCharacterSet
characterSetWithCharactersInString:@"0123456789,"] invertedSet];
NSString* newString = [[str componentsSeparatedByCharactersInSet:characterSet]
componentsJoinedByString:@""];
您将拥有这样的字符串:90,5,6
。然后只需使用逗号分割并转换为NSNumber
:
NSArray* arrayOfStrings = [newString componentsSeparatedByString:@","];
NSMutableArray* arrayOfNumbers = [NSMutableArray arrayWithCapacity:arrayOfStrings.count];
for (NSString* string in arrayOfStrings) {
[arrayOfNumbers addObject:[NSDecimalNumber decimalNumberWithString:string]];
}
使用this response中的NSString
类别,可以简化为:
NSArray* arrayOfStrings = [newString componentsSeparatedByString:@","];
NSArray* arrayOfNumbers = [arrayOfStrings valueForKey: @"decimalNumberValue"];
答案 1 :(得分:5)
NSString* str = @"[90, 5, 6]";
NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"[] "];
NSArray *array = [[[str componentsSeparatedByCharactersInSet:characterSet]
componentsJoinedByString:@""]
componentsSeparatedByString:@","];
答案 2 :(得分:1)
NSString *newSTR = [str stringByReplacingOccurrencesOfString:@"[" withString:@""];
newSTR = [newSTR stringByReplacingOccurrencesOfString:@"]" withString:@""];
NSArray *items = [newSTR componentsSeparatedByString:@","];
答案 3 :(得分:0)
试试这个
NSArray *arr = [string componentsSeparatedByString:@","];
答案 4 :(得分:0)
您可以使用正则表达式
来实现([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,你只需要迭代它并将字符串转换为数字并将它们插入数组。