जावास्क्रिप्ट में काफी नया होने के कारण, मैं इनमें से प्रत्येक का उपयोग करने में असमर्थ हूं।
क्या कोई मेरे लिए इसे स्पष्ट करने में मदद कर सकता है?
जावास्क्रिप्ट में काफी नया होने के कारण, मैं इनमें से प्रत्येक का उपयोग करने में असमर्थ हूं।
क्या कोई मेरे लिए इसे स्पष्ट करने में मदद कर सकता है?
जवाबों:
यदि आपको एक नियमित अभिव्यक्ति की आवश्यकता है, तो उपयोग करें search()। नहीं तो indexOf()और तेज होने वाला है।
searchअगर आप नहीं करना चाहते हैं, तो भी एक रेगेक्स में एक स्ट्रिंग का मूल्यांकन करेंगे।
खोज फ़ंक्शन ( यहां एक विवरण ) एक नियमित अभिव्यक्ति लेता है, जो आपको अधिक परिष्कृत पेटेंट, केस-असंवेदनशील तारों आदि के खिलाफ मैच करने की अनुमति देता है, जबकि इंडेक्सऑफ ( यहां एक विवरण ) बस शाब्दिक स्ट्रिंग से मेल खाता है। हालाँकि, indexOf आपको एक आरंभिक सूचकांक निर्दिष्ट करने की भी अनुमति देता है।
मुझे लगता है कि मुख्य अंतर यह है कि खोज नियमित अभिव्यक्ति को स्वीकार करती है।
इस संदर्भ की जाँच करें:
IndexOf () - यह स्ट्रिंग शाब्दिक या स्ट्रिंग ऑब्जेक्ट को स्वीकार करता है लेकिन नियमित अभिव्यक्ति नहीं । यह अपनी खोज शुरू करने के लिए शून्य-आधारित पूर्णांक मान को भी स्वीकार करता है, जैसे:
खोज () - दोनों स्ट्रिंग शाब्दिक या स्ट्रिंग ऑब्जेक्ट और नियमित अभिव्यक्ति को स्वीकार करता है। लेकिन यह खोज शुरू करने के लिए एक सूचकांक को स्वीकार नहीं करता है।
"baby/e/lephant".indexOf(m);?
indexOf () और खोज ()
दोनों में आम है
i) खोजे गए मूल्य की पहली घटना लौटाते हैं
ii) रिटर्न -1 अगर कोई मैच नहीं मिला
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8 indexOf में विशेष ()
i) आप दूसरे तर्क के रूप में शुरुआती खोज स्थिति दे सकते हैं
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position) खोज मूल्य नियमित अभिव्यक्ति हो सकती है
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
खोज पाता है कि यह एक नियमित अभिव्यक्ति के साथ मेल खाता है, लेकिन इसका कोई ऑफ़सेट नहीं है। IndexOf से मिलान करने के लिए शाब्दिक का उपयोग करता है, लेकिन एक ऑफसेट है।
रेगेक्स के बिना , इंडेक्सऑफ और खोज के बीच कोई व्यावहारिक अंतर नहीं है ।
नीचे दिया गया उदाहरण एक लाइव डेमो देता है :
function FromSearch() {
var str = document.getElementById("demo").innerText;
var n = str.search("difference");
document.getElementById("Location").innerHTML = n;
}
function FromindexOf() {
var str = document.getElementById("demo").innerText;
var n = str.indexOf("difference");
document.getElementById("Location").innerHTML = n;
}
<p id="demo">Without a <a href='http://www.w3schools.com/js/js_regexp.asp'>regex</a>, there is no practical difference between <a href='http://www.w3schools.com/jsref/jsref_indexof.asp'>indexOf</a> and <a href='http://www.w3schools.com/jsref/jsref_search.asp'>search</a>
</p>
<button onclick="FromSearch()">From search</button>
<button onclick="FromindexOf()">From indexOf</button>
<p>Location of difference in the above sentence is:</p>
<mark id="Location"></mark>
searchएक स्ट्रिंग को एक में रूपांतरित करता है RegExp, इसलिए उदाहरण के लिए, str.search("d........e");चरित्र 39 पर भी मेल खाएगा।