2011-11-16 15 views
13

Voglio decodificare la stringa HTML e memorizzarla in NSString.Convertire la stringa di testo HTML formattata in parti NSString

seguito è la stringa html per una delle risposte da google direction api.

teststring is Turn <b>right</b> onto <b>Kennington Park Rd/A3</b><div style="font-size:0.9em">Continue to follow A3</div><div style="font-size:0.9em">Entering toll zone in 1.7&nbsp;km at Newington Causeway/A3</div><div style="font-size:0.9em">Go through 2 roundabouts</div> 

Voglio conservare questa stringa html in Array di 4 NSStrings diversi con i seguenti 4 NSStrings (la rimozione di tutte le informazioni per i colori formato)

Turn right onto Kennington Park Rd/A3 
Continue to follow A3 
Entering toll zone in 1.7 km at Newington Causeway/A3 
Go through 2 roundabouts 

ho usato seguente metodo per convertire stringa html in pianura testo. (html_response è la risposta dal server e stringByConvertingHTMLToPlainText è il metodo definito nel file di classe personalizzato)

testString = (NSString*) [html_response stringByConvertingHTMLToPlainText]; 
NSLog(@"%@",testString); 

ma converte tutta stri ng invece di romperlo in parti. uscita alla console è

Turn right onto Kennington Park Rd/A3Continue to follow A3 Entering toll zone in 1.7 km at Newington Causeway/A3 Go through 2 roundabouts 

Così ho bisogno di scrivere metodo personalizzato per fare questo? Qualsiasi aiuto sarà molto apprezzato.

risposta

18

C'è una bella NSString category che è possibile utilizzare, è una parte del progetto MWFeedParser. Più in particolare, si cerca il file NSString+HTML.

La categoria NSString + HTML aggiunge i seguenti metodi alla classe NSString,

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

Si potrebbe quindi provare qualcosa come:

NSString *summary = [[[htmlString stringByStrippingTags] stringByRemovingNewLinesAndWhitespace] stringByDecodingHTMLEntities]; 

Speranza che aiuta !, buona fortuna :)

+0

grazie per la tua risposta. con il metodo che hai suggerito, ho la stringa html convertita in nsstring ma ho bisogno di memorizzarla come una matrice contenente 4 differenti nsstring. Hai idea di come posso farlo? Ho bisogno di sovrascrivere i metodi sopra? – chatur

+0

Una stringa per div? – Goles