2011-10-12 9 views
5

Tengo NSString que inicialmente parecía <a href="http://link.com"> LinkName</a>. Me eliminado las etiquetas html y ahora tienen un NSString que se parece aSepare 1 NSString en dos NSStrings por whiteSpace

http://Link.com SiteName 

cómo puedo separar los dos en diferentes NSString s por lo que tendría

http://Link.com 

y

SiteName 

I Específicamente, quiero mostrar el SiteName en una etiqueta y simplemente usar el http://Link.com para abrir en un UIWebView pero no puedo cuando es todo una cadena. Cualquier sugerencia o ayuda es muy apreciada.

+0

posible duplicado de [NSString tokenize en Objective-C] (http://stackoverflow.com/qu estions/259956/nsstring-tokenize-in-objective-c) –

Respuesta

8
NSString *s = @"http://Link.com SiteName"; 
NSArray *a = [s componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
NSLog(@"http: '%@'", [a objectAtIndex:0]); 
NSLog(@"site: '%@'", [a lastObject]); 

NSLog:

http: 'http://Link.com' 
site: 'SiteName' 

Bono, manejar un nombre de sitio con un espacio incrustado con un RE: salida

NSString *s = @"<a href=\"http://link.com\"> Link Name</a>"; 
NSString *pattern = @"(http://[^\"]+)\">\\s+([^<]+)<"; 

NSRegularExpression *regex = [NSRegularExpression 
           regularExpressionWithPattern:pattern 
           options:NSRegularExpressionCaseInsensitive 
           error:nil]; 

NSTextCheckingResult *textCheckingResult = [regex firstMatchInString:s options:0 range:NSMakeRange(0, s.length)]; 
NSString *http = [s substringWithRange:[textCheckingResult rangeAtIndex:1]]; 
NSString *site = [s substringWithRange:[textCheckingResult rangeAtIndex:2]]; 

NSLog(@"http: '%@'", http); 
NSLog(@"site: '%@'", site); 

NSLog:

http: 'http://link.com' 
site: 'Link Name' 
+0

sí, su derecho funciona en algunos "siteName", pero algunos también están espaciados como "Site Name", así que me estoy encontrando con otro problema ... pero puedo usar un poco de codificación para evitarlo si no hay otra manera – FreeAppl3

+1

Usted probablemente estén mejor usando una expresión Regular. – zaph

+0

Gracias @CocoaFu ¡Agradezco la ayuda! Por ahora acabo de usar el objeto en el índice 1 y el último objeto para obtener lo que necesitaba, pero examinaré las expresiones regulares ... parece más factible. – FreeAppl3

2

NSString tiene un método con la firma:

componentsSeparatedByString: 

Se devuelve una matriz de componentes como su resultado. Úselo así:

NSArray *components = [myNSString componentsSeparatedByString:@" "]; 

[components objectAtIndex:0]; //should be SiteName 
[components objectAtIndex:1]; // should be http://Link.com 

Buena suerte. salida

+0

En realidad, eso no obtendrá el sitio si hay más de un espacio de separación de caracteres de los componentes. – zaph

+0

¡Muchas gracias! Sabía que era simple, ya que unas pocas líneas de código no podían encontrar la forma de obtenerlas ... ¡ambas respuestas funcionarán! Aprecio la ayuda inmensamente !!! – FreeAppl3

Cuestiones relacionadas