एक बड़ी स्ट्रिंग को देखते हुए, स्ट्रिंग के भीतर मौजूद सभी मान्य यूआरएल की सरणी बनाने का सबसे अच्छा तरीका क्या है?उद्देश्य-सी - एक स्ट्रिंग के भीतर एक यूआरएल ढूँढना
उत्तर
इस के लिए RegexKitLite
उपयोग करने के लिए कोई ज़रूरत नहीं, आईओएस 4 के बाद से एप्पल NSDataDetector
(NSRegularExpression
का एक उपवर्ग प्रदान)।
NSDataDetector* detector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeLink error:nil];
NSArray* matches = [detector matchesInString:source options:0 range:NSMakeRange(0, [source length])];
NSDataDetector * केवल * आईओएस पर उपलब्ध है। प्रश्न का शीर्षक "* उद्देश्य-सी * एक स्ट्रिंग के भीतर एक यूआरएल ढूँढना" –
सच है, यह इस बात पर निर्भर करता है कि मिक किस मंच पर काम कर रहा है ... लेकिन अपने अंतिम प्रश्नों को देखते हुए, वह आईओएस को लक्षित कर रहा है। – gcamp
हिंडसाइट के साथ, इसे मैक में 10.7 में जोड़ा गया था, ऊपर दी गई टिप्पणियों के कुछ महीने बाद। – Tommy
मैं इसके लिए 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 मैं यूआरएल के लिए वहाँ का उपयोग किया है सरल है, लेकिन आप विचार मिलता है।)
यह सबसे अच्छा तरीका है 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
टुकड़ा: टुकड़ा
- 1. एक एलडीएपी यूआरएल ढूँढना?
- 2. एक टपल में एक स्ट्रिंग के सूचकांक ढूँढना
- 3. यूआरएल से एक स्ट्रिंग
- 4. एक स्ट्रिंग यूआरएल
- 5. WPF आइटम्स कंट्रोल के भीतर नियंत्रण ढूँढना
- 6. ढूँढना एक द्विआधारी ढेर
- 7. चेक अगर एक सूची के भीतर एक स्ट्रिंग Linq
- 8. ढूँढना उपयोगों == एक बड़ी codebase
- 9. ढूँढना एक सरणी
- 10. यूआरएल एन्कोड एक यूआरएल
- 11. अजगर Regex एक स्ट्रिंग के भीतर दोहरे उद्धरण में एक स्ट्रिंग को खोजने के लिए
- 12. एक स्ट्रिंग
- 13. यूआरएल स्ट्रिंग में एक आईडी एन्क्रिप्ट/एन्कोडिंग
- 14. जांचें कि कोई स्ट्रिंग एक यूआरएल है
- 15. जावा में कोई स्ट्रिंग एक मान्य यूआरएल
- 16. पायथन: ढूँढना एक नेस्टेड सूची
- 17. एक पत्र के निर्देशांक ढूँढना TextView
- 18. स्ट्रिंग के भीतर
- 19. एक लूप के भीतर Asynchronicity
- 20. एनएसएसटींग ऑब्जेक्ट में एक सबस्ट्रिंग ढूँढना
- 21. PHP/REGEX: कोष्ठक के भीतर एक स्ट्रिंग प्राप्त करें
- 22. grepl: एक स्ट्रिंग के भीतर खोजें जिसमें पैटर्न
- 23. कितनी बार एक स्ट्रिंग एक और स्ट्रिंग
- 24. php और regex के माध्यम से पाठ स्ट्रिंग से यूआरएल ढूँढना?
- 25. एक HTTP यूआरएल
- 26. सी ++ में, एक स्ट्रिंग के भीतर एक स्ट्रिंग के भीतर एक सबस्ट्रिंग की सभी घटनाओं को प्रतिस्थापित करने का सबसे तेज़ तरीका क्या है?
- 27. एक यूआरएल
- 28. एक यूआरएल
- 29. एक यूआरएल
- 30. एक यूआरएल
एक 'UITextView' या एक' UILabel' में वरना soemthing के लिए प्रदर्शन के लिए इस है? – dredful
[मेरा जवाब] देखें (http://stackoverflow.com/a/25574255/1966109) एक समान प्रश्न के लिए जो स्विफ्ट 3 का उपयोग करता है और आपकी समस्या को हल करने के 2 तरीके देता है। –