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
risposta
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.
Scan up to il '(', quindi scan it, quindi eseguire la scansione fino a ')'. Il risultato dell'ultima scansione è yyyy
.
Una soluzione senza espressioni regolari! Senti senti! – codewarrior
si potrebbe avere uno sguardo a PKTokenizer in Parsekit:
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
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
@TPoschel Grazie - Non mi dispiacerebbe se avessi fatto le correzioni da solo. :) – Abizern
Grazie mille – SampathKumar
Se x e y possono essere parentesi, sei in un mondo di dolore. – codewarrior
Suoni come vuoi regex ... – Moshe