2011-10-12 14 views
5

Tôi có một số NSString ban đầu trông giống như <a href="http://link.com"> LinkName</a>. Tôi đã gỡ bỏ các thẻ html và bây giờ có một NSString trông giống nhưTách riêng 1 NSString thành hai NSStrings theo whiteSpace

http://Link.com SiteName 

làm thế nào tôi có thể tách hai thành khác nhau NSString s vì vậy tôi sẽ có

http://Link.com 

SiteName 

tôi đặc biệt muốn hiển thị SiteName trong một nhãn và chỉ sử dụng http://Link.com để mở trong một UIWebView nhưng tôi không thể khi nó là tất cả một chuỗi. Bất kỳ đề xuất hoặc trợ giúp được đánh giá cao.

+0

thể trùng lặp của [NSString tokenize trong Objective-C] (http://stackoverflow.com/qu estions/259956/nsstring-tokenize-in-objective-c) –

Trả lời

8
NSString *s = @"http://Link.com SiteName"; 
NSArray *a = [s componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; 
NSLog(@"http: '%@'", [a objectAtIndex:0]); 
NSLog(@"site: '%@'", [a lastObject]); 

NSLog đầu ra:

http: 'http://Link.com' 
site: 'SiteName' 

thưởng, xử lý một tên trang web với một không gian nhúng với một RE:

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 đầu ra:

http: 'http://link.com' 
site: 'Link Name' 
+0

có quyền của bạn nó hoạt động trên một số "siteName" nhưng một số khoảng cách cũng như "Tên trang web" vì vậy tôi đang chạy vào một vấn đề khác ... nhưng tôi có thể sử dụng một số mã hóa bẩn để có được xung quanh nó nếu theres không có cách nào khác – FreeAppl3

+1

Bạn có lẽ tốt hơn khi sử dụng biểu thức Chính quy. – zaph

+0

Cảm ơn bạn @CocoaFu Tôi đánh giá cao sự trợ giúp! Bây giờ tôi chỉ sử dụng đối tượng ở chỉ số 1 và đối tượng cuối cùng để có được những gì tôi cần nhưng tôi sẽ nhìn vào biểu thức chính quy .. có vẻ như khả thi hơn. – FreeAppl3

2

NSString có một phương pháp với chữ ký:

componentsSeparatedByString: 

Nó trả về một mảng của các thành phần như kết quả của nó. Sử dụng nó như thế này:

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

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

Chúc may mắn.

+0

Trên thực tế, sẽ không nhận được trang web nếu có nhiều hơn một ký tự khoảng trắng tách các thành phần. – zaph

+0

Cảm ơn bạn rất nhiều! Tôi biết nó đơn giản như một vài dòng mã chỉ không thể tìm ra cách để có được chúng ... cả hai câu trả lời này sẽ hoạt động! Tôi đánh giá cao sự giúp đỡ vô cùng !!! – FreeAppl3