2010-03-02 1 views
14

Я получаю текст из Интернета и содержит html сущности (т. Е. ó = -). Я хочу показать этот текст в пользовательской ячейке iPhone.Objective-C: Как заменить объекты HTML?

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

+0

Вы не первый, кто задал этот вопрос. Взгляните на эту тему: http://stackoverflow.com/questions/1105169/html-character-decoding-in-objective-c-cocoa – Shingoo

+0

Я читал этот вопрос раньше, но этот пользователь запрашивает числовые объекты HTML которые легче заменить. Числовой код тот же, и вам просто нужно заменить окружающие символы. – arielcamus

ответ

36

Проверьте мой NSString category for HTML. Вот доступные методы:

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

Кажется, эта категория использует категорию Google Toolbox для Mac. – user1071136

+0

Да, он использует GTM для кодирования/декодирования HTML-объектов. –

+0

Что касается [этого] (https://github.com/mwaterfall/MWFeedParser/issues/72) вопроса? – Praveenkumar

1

Можете ли вы использовать метод NSMutableStringreplaceOccurrencesOfString:withString:options:range:?

+0

Использование этого сообщения заставляет меня определить массив со всеми возможными строками для замены, который является очень тяжелой работой. Тем не менее, я попытаюсь найти этот массив на другом языке программирования и использовать его в Objective-C – arielcamus

12

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

+1

Вам не нужно комментировать _GTMDevLog; вы можете #define его самостоятельно, что бы вы ни хотели. (Спасибо dmaclach, ниже.) –

2

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

6

Вы можете сделать способ, который может заменить 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; 
} 

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

Смежные вопросы