1

如何解析以下字符串

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

并将 "" 内的值附加在一起,并省略字符串的其余部分。我需要将修改后的字符串设为“New York, United States”。

CFStringRef address = ABMultiValueCopyValueAtIndex(multiValue, identifier);

当我投射CFStringRef到 时NSString,我得到了上面记录的表格。我将如何从字符串中检索城市/国家/地区值

4

1 回答 1

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 等。

于 2012-05-01T12:12:51.730 回答