เป็นธรรมใหม่ของ JavaScript ฉันไม่สามารถแยกแยะว่าจะใช้แต่ละอย่างเมื่อใด
มีใครช่วยอธิบายเรื่องนี้ให้ฉันได้บ้าง?
เป็นธรรมใหม่ของ JavaScript ฉันไม่สามารถแยกแยะว่าจะใช้แต่ละอย่างเมื่อใด
มีใครช่วยอธิบายเรื่องนี้ให้ฉันได้บ้าง?
คำตอบ:
search()
หากคุณจำเป็นต้องมีการแสดงออกปกติใช้ มิฉะนั้นindexOf()
จะเร็วขึ้น
search
จะประเมินสตริงเป็น regex แม้ว่าคุณไม่ต้องการ
ฟังก์ชั่นการค้นหา ( คำอธิบายเดียวที่นี่ ) ใช้นิพจน์ทั่วไปซึ่งช่วยให้คุณสามารถจับคู่กับส่วนที่ซับซ้อนมากขึ้นสตริงตัวพิมพ์เล็กและตัวพิมพ์เล็ก ฯลฯ ในขณะที่ indexOf ( คำอธิบายเดียวที่นี่ ) จะจับคู่สตริงตัวอักษร อย่างไรก็ตาม indexOf ยังอนุญาตให้คุณระบุดัชนีเริ่มต้น
IndexOf () - มันยอมรับตัวอักษรสตริงหรือวัตถุสตริง แต่ไม่ได้แสดงออกปกติ นอกจากนี้ยังยอมรับค่าจำนวนเต็มแบบ zero-based เพื่อเริ่มการค้นหาเช่น:
ค้นหา () - ยอมรับทั้งตัวอักษรสตริงหรือวัตถุสตริงและการแสดงออกปกติ แต่ไม่ยอมรับดัชนีเพื่อเริ่มการค้นหา
"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 ใช้ตัวอักษรเพื่อจับคู่ แต่มีการชดเชย
โดยไม่ต้องregex , ไม่มีความแตกต่างในทางปฏิบัติระหว่าง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
แปลงสตริงเป็น a RegExp
ดังนั้นstr.search("d........e");
จะจับคู่ที่อักขระ 39