आप अगर एक उरी के स्ट्रिंग का एक एक्सटेंशन है निर्धारित करने के लिए System.IO.Path
वर्ग के HasExtension
विधि का उपयोग कर सकते हैं।
Uri
ऑब्जेक्ट की संपत्ति का उपयोग करके, आप उरी का प्रतिनिधित्व करने वाली पूरी स्ट्रिंग पुनर्प्राप्त कर सकते हैं। इस स्ट्रिंग को पथ वर्ग की HasExtension
विधि में पास करने से एक बूलियन सही ढंग से वापस आ जाएगा जो इंगित करता है कि उरी में फ़ाइल एक्सटेंशन है या नहीं।
इस कोड का परीक्षण करने के लिए निम्न कोड को एक सरल कंसोल एप्लिकेशन में कॉपी और पेस्ट करें। केवल myUri3
और myUrl4
वापस लौटें, जो यह भी दर्शाता है कि HasExtension
विधि फ़ाइल नाम (और एक्सटेंशन) के बाद अतिरिक्त वर्णों (यानी क्वेरीस्ट्रिंग्स) के साथ सही तरीके से निपट सकती है।
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Uri myURI1 = new Uri(@"http://www.somesite.com/");
Uri myURI2 = new Uri(@"http://www.somesite.com/filenoext");
Uri myURI3 = new Uri(@"http://www.somesite.com/filewithext.jpg");
Uri myURI4 = new Uri(@"http://www.somesite.com/filewithext.jpg?q=randomquerystring");
Console.WriteLine("Does myURI1 have an extension: " + Path.HasExtension(myURI1.AbsoluteUri));
Console.WriteLine("Does myURI2 have an extension: " + Path.HasExtension(myURI2.AbsoluteUri));
Console.WriteLine("Does myURI3 have an extension: " + Path.HasExtension(myURI3.AbsoluteUri));
Console.WriteLine("Does myURI4 have an extension: " + Path.HasExtension(myURI4.AbsoluteUri));
Console.ReadLine();
}
}
}
संपादित करें:
अगर विस्तार एक वैध विस्तार है निर्धारित करने के बारे में प्रश्न प्रश्नकर्ता के संपादन के आधार पर, मैं नीचे कुछ नए कोड को मार पड़ी है (& कॉपी एक कंसोल एप्लिकेशन में पेस्ट):
using System;
using System.IO;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Uri myUri1 = new Uri("http://www.somesite.com/folder/file.jpg?q=randomquery.string");
string path1 = String.Format("{0}{1}{2}{3}", myUri1.Scheme, Uri.SchemeDelimiter, myUri1.Authority, myUri1.AbsolutePath);
string extension1 = Path.GetExtension(path1);
Console.WriteLine("Extension of myUri1: " + extension1);
Uri myUri2 = new Uri("http://www.somesite.com/folder/?q=randomquerystring");
string path2 = String.Format("{0}{1}{2}{3}", myUri2.Scheme, Uri.SchemeDelimiter, myUri2.Authority, myUri2.AbsolutePath);
string extension2 = Path.GetExtension(path2);
Console.WriteLine("Extension of myUri1: " + extension2);
Console.ReadLine();
}
}
}
इस नए कोड अब डी-निर्माणों एक उरी वस्तु के घटक भागों के सभी (यानी योजना - http
हिस्सा आदि) और विशेष रूप से उरी के किसी भी क्वेरीस्ट्रिंग हिस्से को हटा देता है। यह Adriano द्वारा इस उत्तर पर एक टिप्पणी में संभावित समस्या के आसपास हो जाता है कि क्वेरीस्ट्रिंग में एक डॉट कैरेक्टर हो सकता है (जिससे संभावित रूप से HasExtension
विधि को गड़बड़ कर दिया जा सकता है)।
एक बार उरी डी का निर्माण किया है, अब हम ठीक से निर्धारित कर सकते हैं दोनों उरी स्ट्रिंग एक विस्तार क्या कि विस्तार है है और यह भी है।
यहां से, यह ज्ञात मान्य एक्सटेंशन की सूची के विरुद्ध इस एक्सटेंशन से मेल खाने का मामला है। यह हिस्सा है कि नेट ढांचे आप के रूप में कभी नहीं दिया जाएगा किसी भी फाइल एक्सटेंशन संभवतः मान्य है (किसी भी आवेदन करता है, तो यह इच्छाओं तो यह की अपनी फाइल एक्सटेंशन कर सकते हैं!)
मुझे यकीन नहीं है कि आप उन अंतिम दो मामलों को अलग-अलग बता सकेंगे, जब तक कि आपके पास "मान्यता प्राप्त" एक्सटेंशन की सूची न हो। – Rawling
मैंने इसे अपने संपादन में संबोधित किया है - हालांकि अच्छा बिंदु। – LiverpoolsNumber9
"मैंने क्रेगेट के जवाब को स्वीकार कर लिया है, हालांकि," हे @ लिवरपूलसम्बर 9, इसे नीचे दिए गए एक नए उत्तर में अपना उत्तर देकर बदला जाना चाहिए, और फिर इसे उत्तर के रूप में चिह्नित करें (इस तरह, वैसे, पूरी तरह स्वीकार्य है , भले ही आपके पास तुरंत अपना जवाब हो)। आप अभी भी मदद के दूसरे उत्तर को श्रेय दे सकते हैं, लेकिन चिह्नित उत्तर, जैसा कि आप दिखाते हैं, सवाल का पूरा जवाब नहीं है, इसे 'उरी' प्रकार से कैसे प्राप्त किया जाए। –