过滤并替换ios中所有字符串的出现

时间:2014-04-08 13:53:47

标签: ios objective-c replace nsstring

我有以下格式的数据

   field1 = "sometext";
    field2 = text2;
    field3 =         (
                    {
            uniqueId = 123;
        },
                    {
            uniqueId = 234;
        }
    );
    field4 = "anothertext";

我需要像这样转换它

"field1":"sometext",
"field2":"text2",
"field3": [
                {
        "uniqueId":"123",
    },
                {
        "uniqueId":"234",
    }
],
"field4":"anothertext"

即替换' =' with:并在' ='之前和之后追加和结束字符串用"和;与','我该怎么办?

1 个答案:

答案 0 :(得分:2)

看来你有一个包含几个字符串键/值对的字典,以及你试图转换为JSON的其他字典数组。

如果我对此不正确而完全错过了你想要完成的事情,我道歉。根据您期望的最终结果,这可能是一种更简单的方法。

您当前的初始字符串可以像这样存储:

NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                                         @"sometext",   @"field1",
                                         text2,         @"field2",
                                         myDictArray,   @"field3",
                                         @"anothertxt", @"field4"
                      , nil];

然后使用json转换转换为您想要的格式。

我有一个方法,我用它。

+(NSData*)jsonDatafromDictionary:(NSMutableDictionary*) dictionary
{
    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dictionary
                                                   options:0 // Pass 0 if you don't care about the readability of the generated string
                                                     error:&error];

    if (error) {
        NSString *errorDesc = [NSString stringWithFormat:@"Error creating json data from dictionary: %@", error.localizedDescription];
        NSLog(@"ERROR: %@", errorDesc);
        jsonData = nil;
        return nil;
    }
    else
        return jsonData;
}

要将数据视为NSString,您可以使用:

NSString *jsonString = [[NSString alloc]initWithData:webData encoding:NSUTF8StringEncoding];

要将json转换回字典格式,我使用此方法:

+(NSMutableDictionary*)dictionaryWithContentsOfJSONString:(NSString*)jsonString
{
    NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
    NSError *error = nil;
    NSMutableDictionary *jsonDict = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];
    if (error)
        NSLog(@"FAILED TO CREATE DICTIONARY FROM JSON STRING: %@", error.localizedDescription);
    jsonData = nil;
    error = nil;
    return jsonDict;
}

-----编辑----- 根据您在下面的评论,这可能会让您入门。我唯一没有添加的是在需要的地方添加引号的代码......我需要考虑几分钟,这应该替换所有其他字符,就像你想要的那样。

注意:我没有测试过这个,但应该让你入门。

-(NSString*)convertString:(NSString*)ps
{
    NSString *cs = @"";
    cs = [ps stringByReplacingOccurrencesOfString:@";" withString:@","];
    cs = [cs stringByReplacingOccurrencesOfString:@"(" withString:@"["];
    cs = [cs stringByReplacingOccurrencesOfString:@")" withString:@"]"];
    cs = [cs stringByReplacingOccurrencesOfString:@"=" withString:@":"];
    return cs;
}