【问题标题】:Parse NSString to NSArray将 NSString 解析为 NSArray
【发布时间】:2015-04-20 10:48:28
【问题描述】:

我正在尝试将 NSString 解析为 NSArray,但没有成功。这是我的字符串:NSString *points = @"[[51.471914582, -0.12274114637],[51.47287707533, -0.12163608379]]";

我希望这个字符串映射到 NSArray。

NSArray *tempArray = points;

【问题讨论】:

  • componentsSeparatedByStringstringByReplaceingString、正则表达式等。你试过什么?
  • 试试这个:NSArray* arrayOfStrings = [points componentsSeparatedByString:@","];
  • @Idrees 该字符串实际上是 JSON 格式吗?
  • @Tanuj 但这也会分隔内部值。我只需要 [51.471914582, -0.12274114637] 作为 NSArray 的对象。谢谢:)

标签: ios objective-c nsstring nsarray


【解决方案1】:

好的,代码高尔夫(未经测试):

NSString *points = @"[[51.471914582, -0.12274114637],[51.47287707533, -0.12163608379]]";
NSError *error = nil;
NSArray *pointsArray = [NSJSONSerialization JSONObjectWithData:[points dataUsingEncoding:NSUTF8StringEncoding]
                                                       options:kNilOptions
                                                         error:&error];
for (NSArray *point in pointsArray) {
    NSAssert([point count] == 2, @"Invalid point");
    // do thing with point
    CGPoint pt = CGPointMake([point[0] floatValue], [point[1] floatValue]);
}

【讨论】:

  • 太棒了。你摇滚:)
【解决方案2】:

你可以试试这个,它可以解决你的问题,

NSString *points = @"[[51.471914582, -0.12274114637],[51.47287707533, -0.12163608379]]";
NSArray* arrayOfStrings = [points componentsSeparatedByString:@","];
NSLog(@"%@",arrayOfStrings);
NSMutableArray *copyArray = [arrayOfStrings mutableCopy];
NSMutableString *stringFirst = (NSMutableString *)[copyArray objectAtIndex:0];
NSMutableString *stringLast = (NSMutableString *)[copyArray lastObject];
stringFirst=[stringFirst substringFromIndex:1];
stringLast=[stringLast substringToIndex:stringLast.length-1];
[copyArray replaceObjectAtIndex:0 withObject:stringFirst];
[copyArray replaceObjectAtIndex:(copyArray.count-1) withObject:stringLast];

NSMutableArray *yourarray = [[NSMutableArray alloc] init];
for (int i=0; i<=(copyArray.count/2); i+=2) {
    [yourarray addObject:[NSString stringWithFormat:@"%@,%@",[copyArray objectAtIndex:i], [copyArray objectAtIndex:i+1]]];
}
NSLog(@"%@",yourarray);

编码愉快!!

【讨论】:

    【解决方案3】:

    该字符串看起来像 JSON,因此您可以使用 NSJSONSerialization

    NSData * data = [points dataUsingEncoding: NSUTF8StringEncoding];
    NSError * error = nil;
    NSArray * arrayOfPointArrays = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-21
      • 2012-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      相关资源
      最近更新 更多