2011-05-14 12 views
13

एक बड़ी स्ट्रिंग को देखते हुए, स्ट्रिंग के भीतर मौजूद सभी मान्य यूआरएल की सरणी बनाने का सबसे अच्छा तरीका क्या है?उद्देश्य-सी - एक स्ट्रिंग के भीतर एक यूआरएल ढूँढना

+0

एक 'UITextView' या एक' UILabel' में वरना soemthing के लिए प्रदर्शन के लिए इस है? – dredful

+0

[मेरा जवाब] देखें (http://stackoverflow.com/a/25574255/1966109) एक समान प्रश्न के लिए जो स्विफ्ट 3 का उपयोग करता है और आपकी समस्या को हल करने के 2 तरीके देता है। –

उत्तर

41

इस के लिए RegexKitLite उपयोग करने के लिए कोई ज़रूरत नहीं, आईओएस 4 के बाद से एप्पल NSDataDetector (NSRegularExpression का एक उपवर्ग प्रदान)।

NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil]; 
NSArray* matches = [detector matchesInString:source options:0 range:NSMakeRange(0, [source length])]; 
+0

NSDataDetector * केवल * आईओएस पर उपलब्ध है। प्रश्न का शीर्षक "* उद्देश्य-सी * एक स्ट्रिंग के भीतर एक यूआरएल ढूँढना" –

+0

सच है, यह इस बात पर निर्भर करता है कि मिक किस मंच पर काम कर रहा है ... लेकिन अपने अंतिम प्रश्नों को देखते हुए, वह आईओएस को लक्षित कर रहा है। – gcamp

+3

हिंडसाइट के साथ, इसे मैक में 10.7 में जोड़ा गया था, ऊपर दी गई टिप्पणियों के कुछ महीने बाद। – Tommy

6

मैं इसके लिए RegexKitLite का उपयोग करेंगे:

#import "RegExKitLite.h" 

... 

NSString * urlString = @"blah blah blah http://www.google.com blah blah blah http://www.stackoverflow.com blah blah balh http://www.apple.com"; 
NSArray *urls = [urlString componentsMatchedByRegex:@"http://[^\\s]*"]; 
NSLog(@"urls: %@", urls); 

प्रिंटों:

urls: (
    "http://www.google.com", 
    "http://www.stackoverflow.com", 
    "http://www.apple.com" 
) 

(बेशक, regex मैं यूआरएल के लिए वहाँ का उपयोग किया है सरल है, लेकिन आप विचार मिलता है।)

-1

यह सबसे अच्छा तरीका है URL लिंक को निकालने के लिए है:

आप यह बस इस तरह उपयोग कर सकते हैं (source अपने स्ट्रिंग है)।

NSString *url_ = @"dkc://name.com:8080/123;param?id=123&pass=2#fragment"; 

NSURL *url = [NSURL URLWithString:url_]; 

NSLog(@"scheme: %@", [url scheme]); 

NSLog(@"host: %@", [url host]); 

NSLog(@"port: %@", [url port]); 

NSLog(@"path: %@", [url path]); 

NSLog(@"path components: %@", [url pathComponents]); 

NSLog(@"parameterString: %@", [url parameterString]); 

NSLog(@"query: %@", [url query]); 

NSLog(@"fragment: %@", [url fragment]); 

आउटपुट:

योजना: DKC

मेजबान: name.com

पोर्ट: 8080

पथ:/12345

पथ घटकों: ( "/", 123) parameterString: param

क्वेरी: आईडी = 1 & पास = 2

टुकड़ा: टुकड़ा

संबंधित मुद्दे