chi*_*k10 -2 objective-c nsstring nsarray ios
我有一个字符串
NSString* str = @"[90, 5, 6]";
Run Code Online (Sandbox Code Playgroud)
我需要将它转换为数组
NSArray * numbers = [90, 5 , 6];
Run Code Online (Sandbox Code Playgroud)
我做了很长的路:
+ (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;
}
是否有任何简洁快捷的方式进行此类转换?
谢谢
red*_*t84 12
首先从字符串中删除不需要的字符,如空格和大括号:
NSString* str = @"[90, 5, 6]";
NSCharacterSet* characterSet = [[NSCharacterSet
characterSetWithCharactersInString:@"0123456789,"] invertedSet];
NSString* newString = [[str componentsSeparatedByCharactersInSet:characterSet]
componentsJoinedByString:@""];
Run Code Online (Sandbox Code Playgroud)
你会得到一个像这样的字符串:90,5,6.然后简单地使用逗号分割并转换为NSNumber:
NSArray* arrayOfStrings = [newString componentsSeparatedByString:@","];
NSMutableArray* arrayOfNumbers = [NSMutableArray arrayWithCapacity:arrayOfStrings.count];
for (NSString* string in arrayOfStrings) {
[arrayOfNumbers addObject:[NSDecimalNumber decimalNumberWithString:string]];
}
Run Code Online (Sandbox Code Playgroud)
使用此响应中的NSString类别,可以简化为:
NSArray* arrayOfStrings = [newString componentsSeparatedByString:@","];
NSArray* arrayOfNumbers = [arrayOfStrings valueForKey: @"decimalNumberValue"];
Run Code Online (Sandbox Code Playgroud)
NSString* str = @"[90, 5, 6]";
NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"[] "];
NSArray *array = [[[str componentsSeparatedByCharactersInSet:characterSet]
componentsJoinedByString:@""]
componentsSeparatedByString:@","];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21795 次 |
| 最近记录: |