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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-31 02:02:35  来源:igfitidea点击:

how to convert NSString to NSArray

iosobjective-cnsstringnsarray

提问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 NSStringcategory 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,你只需要迭代它并将字符串转换为数字并将它们插入到数组中。