मैं कैसे जांच सकता हूं कि एक स्ट्रिंग में एक सबस्ट्रिंग है, लेकिन केवल एक विशिष्ट स्थिति में?जांचें कि क्या एक स्ट्रिंग में एक शब्द है लेकिन केवल विशिष्ट स्थिति में है?
उदाहरण स्ट्रिंग:
अपने पसंदीदा रंग क्या है? मेरी [पसंदीदा] रंग नीला
है अगर मैं अगर स्ट्रिंग किसी विशिष्ट शब्द मैं आमतौर पर ऐसा करने के निहित जाँच करने के लिए चाहता था:
var
S: string;
begin
S := 'What is your favorite color? my [favorite] color is blue';
if (Pos('favorite', S) > 0) then
begin
//
end;
end;
क्या मैं जरूरत है निर्धारित करने के लिए शब्द पसंदीदा स्ट्रिंग में मौजूद है, हालांकि यह अनदेखा करता है कि यह [] प्रतीकों के अंदर दिखाई देता है, जो उपर्युक्त कोड नमूना स्पष्ट रूप से नहीं करता है।
तो अगर हम एक बूलियन समारोह में कोड डाल दिया, कुछ नमूना परिणाम इस प्रकार दिखाई देगा:
सही: अपने पसंदीदा रंग क्या है? मेरी [मेरी पसंदीदा] रंग नीला है
सही: अपने पसंदीदा रंग क्या है? मेरी [, ऐसा] रंग नीला है
गलत: अपने , ऐसा रंग क्या है? मेरी [कुछ पसंदीदा] रंग नीला
पहले दो नमूने ऊपर सत्य हैं, क्योंकि शब्द पसंदीदा [] प्रतीकों में से बाहर पाया जाता है, चाहे वह उन्हें अंदर नहीं है या।
तीसरा नमूना झूठा है क्योंकि भले ही पसंदीदा शब्द है, यह केवल [] प्रतीकों के अंदर दिखाई देता है - हमें केवल यह जांचना चाहिए कि यह प्रतीकों के बाहर मौजूद है या नहीं।
तो मुझे यह निर्धारित करने के लिए एक फ़ंक्शन चाहिए कि कोई शब्द (इस उदाहरण में पसंदीदा) स्ट्रिंग में दिखाई देता है, लेकिन तथ्य को अनदेखा कर रहा है कि शब्द [] प्रतीकों के अंदर घिरा हुआ है या नहीं।
विचार: 1) '\ s' पर स्ट्रिंग को विभाजित करें और चौथे तत्व की जांच करें। 2) 'पसंदीदा' के लिए जांचें (शब्द के चारों ओर रिक्त स्थान नोट करें)। 3) स्ट्रिंग को प्रश्न चिह्न '?' पर विभाजित करें और फिर जांचें कि क्या यह 'पसंदीदा' है या नहीं। –
खोज '[', अगर खोज मिली ']', '[]' के बीच में हटाएं, पसंदीदा के लिए खोजें। –
या '\ b' + wordtofind + '\ b''' के रेगेक्स के साथ नियमित अभिव्यक्ति (XE में शामिल इकाइयों के साथ) का उपयोग करें। केवल एक चीज जिसे आप देखना चाहते हैं वह 'क्या यह आपका पसंदीदा है?', जहां '?' इसे मेल नहीं करेगा। –