ios 如何将 NSString 转换为 NSArray
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/25501898/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
how to convert NSString to NSArray
提问by chipbk10
I have a string like
我有一个像
NSString* str = @"[90, 5, 6]";
I need to convert it to an array like
我需要将它转换为一个数组
NSArray * numbers = [90, 5 , 6];
I did a quite long way like this:
我做了很长的路是这样的:
+ (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; }
Is there any neat and quick way to do such conversion?
有没有什么简洁快捷的方法来进行这种转换?
Thanks
谢谢
回答by redent84
First remove the unwanted characters from the string, like white spaces and braces:
首先从字符串中删除不需要的字符,如空格和大括号:
NSString* str = @"[90, 5, 6]";
NSCharacterSet* characterSet = [[NSCharacterSet
characterSetWithCharactersInString:@"0123456789,"] invertedSet];
NSString* newString = [[str componentsSeparatedByCharactersInSet:characterSet]
componentsJoinedByString:@""];
You will have a string like this: 90,5,6
. Then simply split using the comma and convert to NSNumber
:
您将有一个这样的字符串:90,5,6
. 然后简单地使用逗号分割并转换为NSNumber
:
NSArray* arrayOfStrings = [newString componentsSeparatedByString:@","];
NSMutableArray* arrayOfNumbers = [NSMutableArray arrayWithCapacity:arrayOfStrings.count];
for (NSString* string in arrayOfStrings) {
[arrayOfNumbers addObject:[NSDecimalNumber decimalNumberWithString:string]];
}
Using the NSString
category from this responseit can be simplified to:
使用此响应中的NSString
类别可以将其简化为:
NSArray* arrayOfStrings = [newString componentsSeparatedByString:@","];
NSArray* arrayOfNumbers = [arrayOfStrings valueForKey: @"decimalNumberValue"];
回答by Buntylm
NSString* str = @"[90, 5, 6]";
NSCharacterSet *characterSet = [NSCharacterSet characterSetWithCharactersInString:@"[] "];
NSArray *array = [[[str componentsSeparatedByCharactersInSet:characterSet]
componentsJoinedByString:@""]
componentsSeparatedByString:@","];
回答by Mutawe
NSString *newSTR = [str stringByReplacingOccurrencesOfString:@"[" withString:@""];
newSTR = [newSTR stringByReplacingOccurrencesOfString:@"]" withString:@""];
NSArray *items = [newSTR componentsSeparatedByString:@","];
回答by Ganesh Kumar
Try like this
像这样尝试
NSArray *arr = [string componentsSeparatedByString:@","];
回答by gimpycpu
You can achieve that using regular expression
您可以使用正则表达式来实现
([0-9]+)
([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])];
Then you have a NSArray of string, you just need to iterate it and convert the strings to number and insert them into an array.
然后你有一个字符串的 NSArray,你只需要迭代它并将字符串转换为数字并将它们插入到数组中。