Monday 15 February 2010

.net - How do I check if a filename matches a wildcard pattern? -


इस सवाल का पहले से ही एक उत्तर है: < 8 जवाब

मुझे पता है मैं कर सकता हूँ < / P> <पूर्व> डायरेक्टरी। गेटफ़ाइलें (@ "सी: \", "*। एचटीएमएल")

और मुझे उन फाइलों की एक सूची मिलती है जो * .html फ़ाइल पैटर्न।

मैं व्युत्क्रम करना चाहता हूं। फ़ाइल नाम abc.html को देखते हुए, मुझे एक ऐसा तरीका चाहिए जो मुझे बताएगा कि वह फ़ाइल नाम *। Html पैटर्न से मेल खाता है। उदाहरण के लिए

  class.method ("abc.html", "* .html") // रिटर्न true class.method ("abc.xml", "* .html") // गलत वर्ग को वापस लौटाता है। ("Abc.doc", "*।। Oc") // रिटर्न true class.method ("Jan24.txt", "Jan * .txt") // रिटर्न true class.method ("Dec24 .txt "," Jan * .txt ") // रिटर्न गलत   

डॉटनेट में कार्यक्षमता मौजूद होना चाहिए। मुझे नहीं पता कि यह कहां से सामने आ गया है।

पैटर्न बदलने के लिए regex एक तरह से जाना हो सकता है। हालांकि ऐसा लगता है कि बहुत सी बढ़त वाले मामले हैं और इससे अधिक परेशानी हो सकती है।

नोट: प्रश्नों में फ़ाइल का नाम अभी भी अस्तित्व में नहीं है, इसलिए मैं सिर्फ एक निर्देशिका को लपेट नहीं सकता। Getfiles कॉल करें और देखें कि क्या परिणाम सेट में कोई प्रविष्टि है।

जाने का सबसे आसान तरीका वाइल्डकार्ड को फिर से लागू करें, और फिर उसे लागू करें:

  सार्वजनिक स्थिर स्ट्रिंग वाइल्डकार्डटोरगेक्स (स्ट्रिंग पैटर्न) {वापसी "^" + रेगेक्स। एस्केप (पैटर्न)। बदलने के("\\*", "।*")। बदलें ("\\?", "।") + "$"; }   

लेकिन अगर आप किसी कारण से regex का उपयोग नहीं कर सकते हैं, तो आप वाइल्डकार्ड मिलान के अपने स्वयं के कार्यान्वयन को लिख सकते हैं। आप एक पा सकते हैं।

अजगर क्रियान्वयन से एक दूसरे को रखी गई है:

  सिस्टम का उपयोग कर; क्लास ऐप {स्टैटिक व्हाइड मेन () {कंसोल। वीडलाइन (मैच ("abc.html", "* .html")); // सही कंसोल लाता है। WrightLine (मैच ("abc.xml", "* .html")); // गलत कंसोल पर लौटता है। WrightLine (मैच ("abc.doc", "*।। Oc")); // सही कंसोल लाता है। WrightLine (मैच ("Jan24.txt", "Jan * .txt")); // सही कंसोल लाता है। WrightLine (मैच ("Dec24.txt", "Jan * .txt")); // रिटर्न झूठी} स्थिर बूल मिलान (स्ट्रिंग एस 1, स्ट्रिंग एस 2) {यदि (एस 2 == "*" || एस 1 == एस 2) सच हो; यदि (s1 == "") झूठी वापसी; अगर (एस 1 [0] == एस 2 [0] || एस 2 [0] == '?') रिटर्न मैच (एस 1 एसबस्ट्रिंग (1), एस 2 एसबस्ट्रिंग (1)); अगर (एस 2 [0] == '*') रिटर्न मैच (एस 1 एसबस्ट्रिंग (1), एस 2) || मैच (S1, s2.Substring (1)); विवरण झूठा है; }}    

No comments:

Post a Comment