तो एक यूट्यूब यूआरएल तरह दिखता है:
http://www.youtube.com/watch?v=oHg5SJYRHA0
वीडियो आईडी आप है में रुचि रखते हैं अंत (oHg5SJYRHA0
) में हिस्सा है .... हालांकि यह जरूरी अंत में नहीं है , क्योंकि यूट्यूब यूआरएल में क्वेरी स्ट्रिंग में अन्य पैरामीटर हो सकते हैं।
आपकी सर्वश्रेष्ठ शर्त शायद नियमित अभिव्यक्ति और फाउंडेशन की NSRegularExpression
कक्षा का उपयोग करने के लिए है। मुझे लगता है कि इस दृष्टिकोण का उपयोग आपके द्वारा प्राप्त अन्य-भाषा ट्यूटोरियल्स में किया जाता है - ध्यान दें कि नियमित अभिव्यक्तियों की सामग्री किसी भी भाषा या टूलकिट में काफी समान होती है जिसमें उन्हें शामिल किया जाता है, इसलिए उन ट्यूटोरियल में पाए गए किसी भी रेगेक्स को काम करना चाहिए तुम्हारे लिए। (मैं v=
पर तोड़ने और अपने 11 अक्षरों को लेने के अपने दृष्टिकोण के खिलाफ सलाह दूंगा, क्योंकि यह विफलता के विभिन्न तरीकों से ग्रस्त है, जिसके लिए रेगेक्स अधिक मजबूत है।)
वीडियो आईडी ढूंढने के लिए आप एक रेगेक्स चाहते हैं v=([^&]+)
की तरह। v=
हमें क्वेरी यूआरएल के दाहिने हिस्से में ले जाता है (अगर हमें watch?fmt=22&v=oHg5SJYRHA0
जैसे कुछ मिलता है)। कोष्ठक कैप्चर समूह बनाते हैं ताकि हम केवल वीडियो आईडी निकाल सकें, न कि अन्य मिलान किए गए वर्ण जिन्हें हम इसे ढूंढने के लिए इस्तेमाल करते थे, और कोष्ठक के अंदर हम एक या अधिक वर्णों का अनुक्रम देखते हैं जो एक एम्पर्सेंड नहीं है - यह सुनिश्चित करता है कि हम v=whatever
फ़ील्ड में सबकुछ प्राप्त करें, और इसके बाद कोई फ़ील्ड नहीं है यदि आपको watch?v=oHg5SJYRHA0&rel=0
जैसे यूआरएल मिलते हैं।
चाहे आप इस या अन्य regex का उपयोग करें, यह संभावना है कि आप कैप्चर समूह का उपयोग करेंगे। (यदि नहीं, rangeOfFirstMatchInString:options:range:
बस आपको बस इतना ही चाहिए, जैसा कि दीमा के जवाब में देखा गया है।) आप कैप्चर समूहों की सामग्रियों (के रूप में NSTextCheckingResult
वस्तुओं) firstMatchInString:options:range:
का उपयोग कर या इसी तरह के तरीकों पर प्राप्त कर सकते हैं:
NSError *error = NULL;
NSRegularExpression *regex =
[NSRegularExpression regularExpressionWithPattern:@"?.*v=([^&]+)"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSTextCheckingResult *match = [regex firstMatchInString:youtubeURL
options:0
range:NSMakeRange(0, [youtubeURL length])];
if (match) {
NSRange videoIDRange = [match rangeAtIndex:1];
NSString *substringForFirstMatch = [youtubeURL substringWithRange:videoIDRange];
}
वहाँ एक अलग प्रारूप आप के साथ काम कर रहे हैं? क्या आप एक उदाहरण दे सकते हैं? – Stavash
@stavash नहीं केवल मूल यूट्यूब डेस्कटॉप यूआरएल ... –
आप एक उदाहरण यूआरएल और आपने जो कोशिश की है उसे आपूर्ति कर सकते हैं। – eternalmatt