2012-10-08 11 views
10

मैं वर्तमान में स्ट्रिंग में एक शब्द खोजने के लिए str.indexOf("word") का उपयोग कर रहा हूं। लेकिन समस्या यह है कि यह दूसरे शब्दों के हिस्सों को भी वापस कर रहा है।जावास्क्रिप्ट स्ट्रिंग में शब्द का सूचकांक ढूंढें (शब्द का हिस्सा नहीं)

उदाहरण: "मैं foobar गया और foo आदेश दिया।" मैं एकल शब्द "foo" की पहली अनुक्रमणिका चाहता हूं, foobar के भीतर foo नहीं।

मैं "foo" की खोज नहीं कर सकता क्योंकि कभी-कभी इसे पूर्ण-स्टॉप या कॉमा (किसी भी गैर-अल्फान्यूमेरिक वर्ण) के बाद किया जा सकता है।

> 'I went to the foobar and ordered foo.'.indexOf('foo') 
14 
> 'I went to the foobar and ordered foo.'.search(/\bfoo\b/) 
33 

/\bfoo\b/ मैचों foo कि शब्द सीमाओं से घिरा हुआ है:

+3

आपके पास छह प्रश्न हैं जिन्हें उत्तर स्वीकार नहीं किया गया है। वापस जाएं और एक जवाब स्वीकार करें और लोग इस पर पोस्ट करने के इच्छुक होंगे। – jeremy

+0

ठीक है धन्यवाद मुझे नहीं पता था कि मेरे पास "user759885" के रूप में एक सतत खाता था, मैंने ऐसा किया और ऐसा किया। – user759885

उत्तर

18

आप इस के लिए regex का उपयोग करना होगा। एक सामान्य मामले के लिए

> var word = 'foo'; 
> var regex = new RegExp('\\b' + word + '\\b'); 
> 'I went to the foobar and ordered foo.'.search(regex); 
33 
+0

एक सामान्य मामला बनाने के लिए जाना था, लेकिन मेरा कार्यान्वयन काम नहीं कर रहा है। 'reg = '/ \ b' + शब्द + '\ b /'; str.indexOf (reg); ' – user759885

+0

यदि आप रेगेक्स लिखना चाहते हैं तो आपको दो चरणों की आवश्यकता है:" \ "(" \\ b ") को डबल स्कैप करें और RegExp कन्स्ट्रक्टर को कॉल करें:' reg = new RegExp ("\\ b "+ शब्द +" \\ बी ");' –

+0

आह, मैं इंडेक्स देखता हूं अगर रेगेक्स नहीं लेता है तो आपने 'खोज() 'का उपयोग किया है। मेरा अंतिम समाधान 'reg =' \\ b ('+ word +') \\ b '; '' str.indexOf (reg); ' – user759885

2

, नियमित अभिव्यक्ति शब्द सीमाओं से घिरा बनाने के लिए रेगुलर एक्सप्रेशन constrcutor का उपयोग करें::

एक मनमाना शब्द एक RegExp वस्तु मिलान करने के लिए निर्माण,

function matchWord(s, word) { 
    var re = new RegExp('\\b' + word + '\\b'); 
    return s.match(re); 
} 

ध्यान दें कि हाइफ़न शब्द सीमाओं को माना जाता है, इसलिए सूरज-सूखे दो शब्द होते हैं।

संबंधित मुद्दे