2010-03-28 3 views
6

Ho una NSString che sarà qualcosa come "xxxx (yyyyy)" dove xey può essere qualsiasi carattere. Mi piacerebbe estrarre solo la y dalla parentesi. Sono riuscito ad estrarre la x usando un NSScanner ma non ho capito il modo corretto per estrarre la y.Estrai i valori tra parentesi da NSString

+3

Se x e y possono essere parentesi, sei in un mondo di dolore. – codewarrior

+1

Suoni come vuoi regex ... – Moshe

risposta

5

modo più semplice sarebbe quella di utilizzare RegExKit:

http://regexkit.sourceforge.net/

allora si sarebbe fare qualcosa di simile:

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

e extractedString conterrebbe tutto ciò che era in parentesi.

5

Scan up to il '(', quindi scan it, quindi eseguire la scansione fino a ')'. Il risultato dell'ultima scansione è yyyy.

+1

Una soluzione senza espressioni regolari! Senti senti! – codewarrior

16

solo per essere completa:

Se siete assolutamente sicuri del formato dell'output è possibile utilizzare i metodi di matrice:

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]; 

Naturalmente, è necessario essere sicuri che i caratteri di delimitazione non esistono nel inputString

+0

C'è un errore di battitura nella dichiarazione yString (ojbectAtIndex) e un punto e virgola mancante nella dichiarazione splitString. Ma per il resto funzionava perfettamente. Grazie. – TPoschel

+0

@TPoschel Grazie - Non mi dispiacerebbe se avessi fatto le correzioni da solo. :) – Abizern

+0

Grazie mille – SampathKumar