Есть ли лучший способ справиться с зарезервированными символами при разборе данных XML / JSON на iPhone? - PullRequest
0 голосов
/ 24 марта 2010

Следующий код работает, но он уродлив и создает кучу автоматически выпущенных объектов. Я использую аналогичный код для разбора зарезервированных символов HTML (для кавычек, символов и т. Д.). Мне просто интересно ... Есть ли способ чище?

    NSString *result = [[NSString alloc] initWithString:userInput];

    NSString *result2 = [result stringByReplacingOccurrencesOfString:@"#" 
                                withString:@"\%23"];
    NSString *result3 = [result2 stringByReplacingOccurrencesOfString:@" " 
                                withString:@"\%20"];
    formatted = [[result3 stringByReplacingOccurrencesOfString:@"&" 
                                withString:@"\%26"] retain];
    [result release];

Ответы [ 2 ]

1 голос
/ 25 марта 2010

@ Янник, ты был на правильном пути, спасибо. stringByAddingPercentEscapesUsingEncoding работает, но игнорирует некоторые символы, которые все еще могут быть проблемой (например, косая черта). Вот лучший способ сделать кодировку URL:

NSString * encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
                                       NULL,
                                       (CFStringRef)unencodedString,
                                       NULL,
                                       (CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
                                       kCFStringEncodingUTF8 );
0 голосов
/ 24 марта 2010

Вы пытались использовать метод stringByAddingPercentEscapesUsingEncoding?

formatted = [result stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
...