เรียนรู้วิธีแยกข้อความระหว่างเครื่องหมายคำพูดคู่จากสตริงด้วย JavaScript
สมมติว่าคุณต้องการรับข้อความที่ยกมาจากบล็อกข้อความ ใบเสนอราคามักจะถูกปิดด้วยเครื่องหมายคำพูดคู่ (" " ). ไม่มีปัญหา คุณสามารถใช้ match() . ของ JavaScript ได้ วิธีการและเวทย์มนตร์ RegEx
นี่คือบล็อคข้อความ (ค่าสตริง) ซึ่งประกอบด้วยประโยคที่มีเครื่องหมายอัญประกาศคู่หนึ่งประโยค ซึ่งเรากำหนดให้กับตัวแปรชื่อ textWithQuote :
const textWithQuote =
'One of my favorite quotes is "First we make our habits, then our habits make us". This quote is sometimes attributed to John Dryden, or other authors.'
ทีนี้มาแนบ match() . กัน ให้กับตัวแปรและส่งผ่านอาร์กิวเมนต์ที่ดูค่อนข้างคลุมเครือนี้ /(?:"[^"]*"|^[^"]*$)/)[0].replace(/"/g, "" (ขออภัย):
const extractQuote = textWithQuote
.match(/(?:"[^"]*"|^[^"]*$)/)[0]
.replace(/"/g, "") และพิมพ์ผลลัพธ์:
console.log(extractQuote)
// "First we make our habits, then our habits make us"
เหตุผลที่เราใช้ [0] มิฉะนั้นสตริงที่ส่งคืนจะซ้ำกัน โดยใช้ [0] เราระบุว่าเราต้องการส่งคืนผลลัพธ์แรก (หนึ่ง) เท่านั้น
เหตุผลที่เราใช้ replace() เมธอด (.replace(/"/g, "") ) มิฉะนั้น ผลลัพธ์ที่ส่งคืนจะมีเครื่องหมายคำพูดส่วนเกิน (เพราะเราส่งคืนข้อความที่ยกมาในสตริงที่มีเครื่องหมายคำพูดอยู่แล้ว)
วิธีอื่นโดยใช้ split()
คุณยังสามารถรับค่าข้อความที่มีเครื่องหมายอัญประกาศโดยใช้ split() วิธีการ:
const textWithQuote =
'One of my favorite quotes is "First we make our habits, then our habits make us". This quote is sometimes attributed to John Dryden, or other authors.'
console.log(textWithQuote.split('"')[1])
// "First we make our habits, then our habits make us"
ในกรณีนี้เราต้องระบุให้ส่งผลลัพธ์ที่สอง [1] เพราะ [0] จะส่งคืน One of my favorite quotes is .
หากคุณระบุ [2] คุณจะได้รับข้อความต่อจาก " . ที่สองทันที อัญประกาศคู่
ฉันไม่แน่ใจว่าจะใช้วิธีใดวิธีหนึ่งเมื่อใด และข้อดีและข้อเสียคืออะไร เนื่องจากฉันเพิ่งเริ่มเจาะลึกในหัวข้อของนิพจน์ทั่วไป