Цель-C: Как заменить сущности HTML?

Я получаю текст из Интернета, и он содержит HTML-сущности (т.е. ó = ó). Я хочу показать этот текст в пользовательскую ячейку iPhone.

Я пытался использовать UIWebView в своей пользовательской ячейке, но я предпочитаю использовать многострочную UILabel. Проблема в том, что я не могу найти способ заменить эти объекты HTML.

5 ответов

Решение

Проверьте мою категорию NSString для HTML. Вот доступные методы:

- (NSString *)stringByConvertingHTMLToPlainText;
- (NSString *)stringByDecodingHTMLEntities;
- (NSString *)stringByEncodingHTMLEntities;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;

Google Toolbox для Mac содержит совместимое с iPhone дополнение NSString, которое сделает это за вас: gtm_stringByUnescapingFromHTML определены в GTMNSString+HTML.h и GTMNSString + HTML.m. Если вы закомментируете вызовы _GTMDevLog и #import "GTMDefines.h" в.m, вам нужно только добавить эти два файла в ваш проект.

Вы можете создать метод, который может заменить html-сущности заданными вами строками.

+(NSString*)parseString:(NSString*)str
{
    str  = [str stringByReplacingOccurrencesOfString:@"–" withString:@"-"];
    str  = [str stringByReplacingOccurrencesOfString:@"”" withString:@"\""];          
    str  = [str stringByReplacingOccurrencesOfString:@"“" withString:@"\""];          
    str  = [str stringByReplacingOccurrencesOfString:@"ó" withString:@"o"];          
    str  = [str stringByReplacingOccurrencesOfString:@"'" withString:@"'"];                
    return str;
}

вызовите этот метод для замены строки, отправив строку в качестве параметра.

Чтобы расширить ответ Мэтта Стивенса (поскольку я пока не могу комментировать), вам не нужно комментировать _GTMDevLog, так как он намеренно настроен так, что вы можете # определить его сами, что хотите.

Вы можете просто использовать NSMutableString"s replaceOccurrencesOfString:withString:options:range: метод?

Другие вопросы по тегам