में वाइल्डकार्ड स्ट्रिंग मिलान मैं एक उपयोगिता फ़ंक्शन/मॉड्यूल लिखना चाहता हूं जो स्ट्रिंग के लिए सरल वाइल्डकार्ड/ग्लोब मिलान प्रदान करेगा। कारण मैं नियमित अभिव्यक्तियों का उपयोग नहीं कर रहा हूं यह है कि उपयोगकर्ता वह होगा जो कुछ प्रकार की कॉन्फ़िगरेशन फ़ाइल का उपयोग करके मिलान करने के लिए पैटर्न प्रदान करेगा। मुझे ऐसा कोई मणि नहीं मिला जो स्थिर है - जोकर की कोशिश की लेकिन इसे स्थापित करने में समस्याएं थीं।रूबी
जिस कार्यक्षमता को मैं ढूंढ रहा हूं वह सरल है। उदाहरण के लिए, निम्नलिखित पैटर्न दिए गए हैं, यहां मैचों हैं:
pattern | test-string | match
========|=====================|====================
*hn | john, johnny, hanna | true , false, false # wildcard , similar to /hn$/i
*hn* | john, johnny, hanna | true , true , false # like /hn/i
hn | john, johnny, hanna | false, false, false # /^hn$/i
*h*n* | john, johnny, hanna | true , true , true
etc...
मैं इसे जितना संभव हो उतना कुशल बनाना चाहता हूं। मैंने पैटर्न स्ट्रिंग्स से रेगेक्स बनाने के बारे में सोचा, लेकिन यह रनटाइम पर करने के लिए अक्षम था। इस कार्यान्वयन पर कोई सुझाव? धन्यवाद।
संपादित: मैं रूबी 1.8.7
मैं की ' '* उदाहरण के लिए hn'', वह की जरूरत है'' मामले में लगता है कि जॉन awesome'' है सच भी लौटने के लिए, और '/.* एचएन $ /' –
से मेल नहीं खाएगा ऐसा लगता है कि मेरे कंप्यूटर (मैक ओएसएक्स तेंदुए) पर ग्लोब काम करने का तरीका नहीं है https://gist.github.com/1041942 –
I मान लीजिए वाइल्डकार्ड मेरे उद्देश्य के लिए ग्लोब से अधिक सटीक है - '' * hn '' के मामले में मुझे पसंद आएगा ई सब कुछ पहले और ऊपर-पैटर्न के मिलान के लिए, और कुछ भी नहीं; इसलिए 'जॉन' के लिए 'सत्य', 'जॉन' के लिए 'झूठा' .. '। धन्यवाद – sa125