解析字符串并附加结果值

时间:2012-05-01 10:57:05

标签: iphone objective-c nsstring

如何解析以下字符串

{
City = "New York";
Country = "United States";
CountryCode = us;
}

将“”中的值附加在一起,并将剩余的字符串省略。我需要将修改后的字符串作为“纽约,美国”。

CFStringRef address = ABMultiValueCopyValueAtIndex(multiValue, identifier);

当我将CFStringRef投射到NSString时,我会收到上面记录的表格。如何从字符串

中检索城市/国家/地区值

1 个答案:

答案 0 :(得分:0)

如果您从网络上接收此数据字符串(可能是JSON),您可以像这样处理数据(iOS 5):

- (void)processData:(NSData *)responseData {
        NSError* error;
        NSDictionary* json = [NSJSONSerialization 
            JSONObjectWithData:responseData
            options:kNilOptions 
            error:&error];
        NSString* city = [[json objectForKey:@"Address"] objectForKey:@"City"];
        NSString* country = [[json objectForKey:@"Address"] objectForKey:@"Country"];
        NSString* result = [city stringByAppendingFormat:@", %@",country];
        NSLog(@"%@", result); //New York, United States
    }

相反,如果此字符串是字典表示,则正确的格式应如下所示:

NSString *str=@"Address = {" 
                @"City = \"New York\";"
                @"Country = \"United States\";"    
                @"CountryCode = us; };";

因此,如果你真的想从NSString传递给NSDictionary,你可以这样使用NSPropartyListSerialization

NSError* error;
NSData *dat=[str dataUsingEncoding:NSUTF8StringEncoding];
NSPropertyListFormat plistFormat;
NSDictionary *temp = [NSPropertyListSerialization propertyListWithData:dat options:NSPropertyListImmutable format:&plistFormat error:&error];
NSString* city = [[temp objectForKey:@"Address"] objectForKey:@"City"];
NSString* country = [[temp objectForKey:@"Address"] objectForKey:@"Country"];
NSString* result = [city stringByAppendingFormat:@", %@",country];
NSLog(@"%@",result);

编辑(根据您更新的问题):

您发布的是字典,而不是数组。字典由一组由键值标识的元素组成。数组由一组由索引标识的元素组成。因此,如果数组中的元素是字符串,则必须处理每个字符串的解析。这通常不是最好的方法,因为@FelixKling说,你也应该使用像json,xml等标准格式。