2010-03-02 12 views
14

Ricevo testo da Internet e contiene entità html (ad esempio ó = ó). Voglio mostrare questo testo in una cella iPhone personalizzata.Objective-C: come sostituire le entità HTML?

Ho provato a utilizzare un UIWebView nella mia cella personalizzata ma preferisco utilizzare una UILabel multilinea. Il problema è che non riesco a trovare alcun modo per sostituire queste entità HTML.

+0

non sei il primo con questa domanda. Dai un'occhiata a questo thread: http://stackoverflow.com/questions/1105169/html-character-decoding-in-objective-c-cocoa – Shingoo

+0

Ho già letto quella domanda, ma questo utente sta chiedendo entità HTML numeriche che sono più facili da sostituire. Il codice numerico è lo stesso e devi solo sostituire i caratteri circostanti. – arielcamus

risposta

36

Controlla il mio NSString category for HTML. Ecco i metodi disponibili:

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

Sembra che questa categoria stia utilizzando la categoria Google Toolbox per Mac. – user1071136

+0

Sì, utilizza GTM per codificare/decodificare le entità HTML. –

+0

Che dire di questo [problema] (https://github.com/mwaterfall/MWFeedParser/issues/72)? – Praveenkumar

1

È sufficiente utilizzare il metodo NSMutableStringreplaceOccurrencesOfString:withString:options:range:?

+0

Utilizzando questo messaggio mi impone di definire un array con tutte le stringhe possibili da sostituire, che è un lavoro molto pesante. Tuttavia, cercherò di trovare questo array in un altro linguaggio di programmazione e usarlo in Objective-C – arielcamus

12

Google Toolbox for Mac include un NSString inoltre compatibile con iPhone che farà questo per voi: gtm_stringByUnescapingFromHTML definita nel GTMNSString+HTML.h e GTMNSString+HTML.m. Se si commentano le chiamate a _GTMDevLog e #import "GTMDefines.h" nel .m è sufficiente aggiungere questi due file al progetto.

+1

Non è necessario commentare _GTMDevLog; puoi # perfezionarlo tu stesso per quello che vuoi. (Grazie a dmaclach, sotto.) –

2

Per ampliare la risposta di Matt Stevens (poiché non ho ancora il permesso di commentare), non è necessario commentare _GTMDevLog, poiché è impostato intenzionalmente in modo che tu possa # definire da solo ciò che vuoi .

6

È possibile creare un metodo che possa sostituire entità html con stringhe fornite dall'utente.

+(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; 
} 

chiamare questo metodo per sostituire la stringa inviando stringa come parametro.

Problemi correlati