2011-10-12 11 views
5

Mam NSString, który początkowo wyglądał jak <a href="http://link.com"> LinkName</a>. I usunąć tagi html i teraz mają NSString który wygląda jakOddziel 1 NSString na dwa NSStrings przez whiteSpace

http://Link.com SiteName 

jak mogę oddzielić od siebie w różnych NSString jest tak musiałbym

http://Link.com 

i

SiteName 

I konkretnie chcesz pokazać SiteName w etykiecie i po prostu użyć http://Link.com, aby otworzyć w UIWebView, ale nie mogę, gdy to wszystko jeden ciąg. Wszelkie sugestie i pomoc są mile widziane.

+0

możliwe duplikat [NSString tokenize w Objective-C] (http://stackoverflow.com/qu estions/259956/nsstring-tokenize-in-objective-c) –

Odpowiedz

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' 

Bonus, uchwyt nazwę witryny z osadzonym przestrzeni z RE: Wyjście

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

tak, twoje prawo działa na niektórych "siteName", ale niektóre są rozmieszczone tak samo jak "Site Name", więc mam inny problem ... ale mogę użyć trochę brudnego kodowania, aby ominąć to, jeśli nie masz innego sposobu. – FreeAppl3

+1

Ty prawdopodobnie lepiej używać wyrażenia regularnego. – zaph

+0

Dziękuję @CocoaFu Doceniam pomoc! Na razie użyłem tylko obiektu z indeksu 1 i ostatniego obiektu, aby uzyskać to, czego potrzebowałem, ale zajrzę do wyrażeń regularnych .. wydaje się to bardziej wykonalne. – FreeAppl3

2

NSString ma metodę z podpisem:

componentsSeparatedByString: 

zwraca tablicę elementów jej wynik. Użyj go tak:

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

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

Powodzenia. Wyjście

+0

Właściwie to nie dostanie witryny, jeśli istnieje więcej niż jeden znak odstępu między elementami. – zaph

+0

Dziękuję bardzo! Wiedziałem, że to proste, ponieważ kilka linii kodu nie mogło pojąć, jak je zdobyć ... obie te odpowiedzi zadziałają! Bardzo doceniam pomoc !!! – FreeAppl3