2010-03-02 14 views
14

Recibo mensajes de texto de Internet y contiene entidades html (es decir, ó = ó). Quiero mostrar este texto en una celda de iPhone personalizada.Objective-C: ¿Cómo reemplazar entidades HTML?

He intentado usar un UIWebView en mi celda personalizada pero prefiero usar un UILabel de líneas múltiples. El problema es que no puedo encontrar ninguna forma de reemplazar estas entidades HTML.

+0

usted no es el primero con esta pregunta. Eche un vistazo a este hilo: http://stackoverflow.com/questions/1105169/html-character-decoding-in-objective-c-cocoa – Shingoo

+0

He leído esa pregunta antes, pero este usuario está pidiendo entidades HTML numéricas que son más fáciles de reemplazar El código numérico es el mismo y solo tiene que reemplazar los caracteres circundantes. – arielcamus

Respuesta

36

Eche un vistazo a mi NSString category for HTML. Aquí están los métodos disponibles:

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

Parece que esta categoría usa la categoría de Google Toolbox para Mac. – user1071136

+0

Sí, usa GTM para codificar/descodificar entidades HTML. –

+0

¿Qué pasa con [este] (https://github.com/mwaterfall/MWFeedParser/issues/72) problema? – Praveenkumar

1

¿Puede simplemente utilizar el método NSMutableStringreplaceOccurrencesOfString:withString:options:range:?

+0

El uso de este mensaje me obliga a definir una matriz con todas las cadenas posibles para reemplazar, que es un trabajo muy pesado. Sin embargo, trataré de encontrar esta matriz en otro lenguaje de programación y la usaré en Objective-C – arielcamus

12

Google Toolbox for Mac incluye una adición NSString compatible con iPhone que va a hacer esto para usted: gtm_stringByUnescapingFromHTML definido en GTMNSString+HTML.h y GTMNSString+HTML.m. Si comenta las llamadas a _GTMDevLog y #import "GTMDefines.h" en .m, solo necesita agregar estos dos archivos a su proyecto.

+1

. No necesita comentar _GTMDevLog; puedes # definirlo tú mismo a lo que quieras. (Gracias a dmaclach, a continuación). –

2

Para ampliar la respuesta de Matt Stevens (ya que no estoy autorizado a comentar), no es necesario comentar _GTMDevLog, ya que está configurada intencionalmente para que usted pueda #definirla usted mismo a lo que quiera .

6

Puede hacer un método que pueda reemplazar entidades html con cadenas proporcionadas por usted.

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

llama a este método para reemplazar la cadena enviando cadena como parámetro.

Cuestiones relacionadas