2010-03-28 15 views
6

Mam NSString, który będzie podobny do "xxxx (yyyyy)", gdzie x i y mogą być dowolną postacią. Chciałbym wyodrębnić tylko y z nawiasów. Udało mi się wyodrębnić x przy użyciu NSScannera, ale nie wymyśliłem właściwego sposobu na wyodrębnienie y.Wyciąg wartości między nawiasami NSString

+3

Jeśli x i y mogą być nawiasami, czeka Cię świat cierpienia. – codewarrior

+1

Brzmi jak chcesz regex ... – Moshe

Odpowiedz

5

Najłatwiej byłoby użyć RegExKit:

http://regexkit.sourceforge.net/

Potem można zrobić coś takiego:

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

i extractedString będzie zawierać co było w nawiasach.

5

Scan up to "(", następnie scan it, a następnie skanuj do ")". Wynik ostatniego skanowania to yyyy.

+1

Rozwiązanie bez regex! Usłysz, usłysz! – codewarrior

16

prostu być skompletowany:

Jeśli jesteś absolutnie pewny formatu wyjściowego można użyć metod tablicy:

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

oczywiście, trzeba mieć pewność, że znaki ograniczające nie istnieje w inputString

+0

Istnieje drobna literówka w deklaracji yString (ojbectAtIndex) i brakujący średnik w deklaracji splitString. Ale poza tym działało idealnie. Dzięki. – TPoschel

+0

@TPoschel Dzięki - nie miałbym nic przeciwko, gdybyś sam wykonał poprawki. :) – Abizern

+0

Dziękuję bardzo – SampathKumar

Powiązane problemy