2010-03-28 10 views
6

Tengo un NSString que será algo así como "xxxx (yyyyy)" donde x y y puede ser cualquier carácter. Me gustaría extraer solo y desde dentro del paréntesis. Logré extraer la x usando un NSScanner pero no he descubierto la forma correcta de extraer el y.Extraer valores entre paréntesis de NSString

+3

Si xey pueden ser paréntesis, te espera un mundo de dolor. – codewarrior

+1

Parece que quieres regex ... – Moshe

Respuesta

5

La manera más fácil sería utilizar RegExKit:

http://regexkit.sourceforge.net/

Entonces usted haría algo como:

[@"xxxx(yyyyy)" getCapturesWithRegexAndReferences:@"\\((.*)\\)",@"$1", &extractedString,nil]; 

y extractedString contendría lo fue entre paréntesis.

5

Scan up to '(', luego scan it, luego escanee hasta ')'. El resultado del último escaneo es yyyy.

+1

¡Una solución sin expresiones regulares! ¡Escucha Escucha! – codewarrior

16

sólo para estar completa:

Si está absolutamente seguro del formato de la salida se pueden utilizar los métodos de matriz:

NSString *inputString; // this is in the form "xxxx(yyyy)" 

NSCharacterSet *delimiters = [NSCharacterSet characterSetWithCharactersInString:@"()"]; 
NSArray *splitString = [inputString componentsSeparatedByCharactersInSet:delimiters]; 

NSString *xString = [splitString objectAtIndex:0]; 
NSString *yString = [splitString objectAtIndex:1]; 

por supuesto, usted necesita estar seguro de que los caracteres que delimitan no existen en la inputString

+0

Hay un error menor en la declaración yString (ojbectAtIndex) y falta un punto y coma en la declaración splitString. Pero de lo contrario funcionó perfectamente. Gracias. – TPoschel

+0

@TPoschel Gracias - No me habría importado si hubieras hecho las correcciones tú mismo. :) – Abizern

+0

Muchas gracias – SampathKumar

Cuestiones relacionadas