JavaScript'te oldukça yeni olduğum için, bunların her birini ne zaman kullanacağımı fark edemiyorum.
Herkes benim için bunu açıklığa kavuşturabilir mi?
JavaScript'te oldukça yeni olduğum için, bunların her birini ne zaman kullanacağımı fark edemiyorum.
Herkes benim için bunu açıklığa kavuşturabilir mi?
Yanıtlar:
Normal bir ifadeye ihtiyacınız varsa kullanın search()
. Aksi takdirde, indexOf()
daha hızlı olacak.
search
bir dizeyi istemeseniz bile normal ifadeye dönüştürür.
Arama fonksiyonu ( burada bir açıklama indexOf (iken), vb daha sofistike patters, küçük harf duyarsız dizeleri, karşı maç sağlayan bir düzenli ifade alır bir açıklama burada ) sadece bir hazır dize eşleşir. Ancak, indexOf ayrıca bir başlangıç dizini belirtmenize izin verir.
IndexOf () - dize değişmezlerini veya dize nesnelerini kabul eder, ancak normal ifadeleri kabul etmez . Ayrıca, aramasını başlatmak için sıfır temelli bir tamsayı değerini de kabul eder, örneğin:
Search () - hem dize değişmezlerini hem de dize nesnelerini ve normal ifadeleri kabul eder. Ancak, aramayı başlatmak için bir dizin kabul etmez.
"baby/e/lephant".indexOf(m);
?
indexOf () ve arama ()
ikisinde de ortak
i) aranan değerin ilk tekrarını döndürür
ii) eşleşme bulunmazsa -1 döndür
let str='Book is booked for delivery'
str.indexOf('b') // returns position 8
str.search('b') // returns position 8
indexOf () içinde özel
i) başlangıç argümanını ikinci bir argüman olarak verebilirsiniz
str.indexOf('k') // 3
str.indexOf('k',4) // 11 (it start search from 4th position)
arama değeri normal ifade olabilir
str.search('book') // 8
str.search(/book/i) // 0 ( /i =case-insensitive (Book == book)
Bir olmadan regex , arasında hiçbir pratik fark yoktur indexOf ve arama .
Aşağıdaki örnek canlı bir demo sunmaktadır :
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
bir dizgiyi RegExp
str.search("d........e");