0
NSString *result 

结果包含:

NC_AllowedWebHosts=
NC_BgeLAN=br1
NC_Doc=/tmp/dhd=
NC_ExPts=1863==
NC_Redirect=1
[...]
binary_custom=/path/to/directory
blocklist=0
blocklist_url=http://list.g.com/?list=
[...]

我正在使用这个函数,但我在解析带有双 == 或三重 === 的列表时遇到问题。

NSArray *strings = [result componentsSeparatedByCharactersInSet:
                    [NSCharacterSet characterSetWithCharactersInString:@"=\r\n"]];
NSMutableArray *keys = [NSMutableArray new];
NSMutableArray *values = [NSMutableArray new];

for (int i = 0; i+1 < strings.count; i+=2) {
        [keys addObject:strings[i]];
        [values addObject:strings[i+1]];
}

我想先解析基于换行符“\r\n”的所有内容,然后解析第一个“=”符号之前的所有内容,然后再解析字典值中的新行之后的所有内容。这样我可以说给我键“NC_ExPts”,值将返回“1863==”等等。任何帮助,将不胜感激。

@Monolo我可以逐行阅读,但我不知道如何在“=”的第一次出现时获取值并将其放入值和键中

    NSArray *lines = [result componentsSeparatedByCharactersInSet:
                      [NSCharacterSet characterSetWithCharactersInString:@"\r\n\n"]];

    for (NSString* line in lines) {
        if (line.length) {
            NSLog(@"line: %@", line);
        }
    }
4

1 回答 1

2

您需要逐行阅读原文,然后将每一行除以第一个“=”符号。使用您正在使用的方法,您一次性划分行和键值对,这意味着您丢失了太多有关数据结构的信息。这就是您在处理值部分中带有“==”的行时遇到困难的原因。

NSString'senumerateLinesUsingBlock:将处理第一部分,并且在每一行中找到第一个“=”很容易用rangeOfString:.

于 2013-08-03T17:41:31.603 回答